/** * Télécharge le Favicon en fonction de l'ID d'un flux * @param int $feed_id */ function fleedicon_content_plugin_getFavicon($feed_id) { /** * Chemin de l'icone pour ce flux */ $iconPath = Plugin::path() . 'favicons/' . $feed_id . '.png'; /** * S'il n'existe pas encore * il faut le télécharger */ if (!file_exists($iconPath)) { /** * On récupère les infos du flux */ $f = new Feed(); $f = $f->getById($feed_id); /** * Et notamment le site web * Plus pertinent que l'URL du flux à cause notamment de feedburner */ $url = parse_url($f->getWebsite()); /** * Si l'URL est inexistante ou malformée on essaie * quand même avec l'URL du flux */ if (!$url) { $url = parse_url($f->getUrl()); } /** * Si l'une des deux marche on essai d'appeler le service g.etfv.co */ if ($url && isset($url['host'])) { $url['scheme'] = isset($url['scheme']) ? $url['scheme'] : 'http'; $ctx = stream_context_create(array('http' => array('timeout' => 2))); $icon = file_get_contents('http://www.google.com/s2/favicons?domain=' . $url['scheme'] . '://' . $url['host'], 0, $ctx); if ($icon) { file_put_contents($iconPath, $icon); } else { copy(Plugin::path() . 'default.png', $iconPath); } } else { /** * Sinon on utilise l'icône par défaut */ copy(Plugin::path() . 'default.png', $iconPath); } } /** * Besoin de ça pour renseigner correctement le ALT */ global $allFeeds; /** * Et l'image brute, sans CSS */ echo '<img src="' . $iconPath . '" width="16" height="16" alt="' . htmlentities($allFeeds['idMap'][$feed_id]['name'], ENT_QUOTES) . '" />'; }
function getCSSMaker() { $cssDir = './' . Plugin::path() . 'cssmaker/'; $cssFiles = scandir($cssDir); foreach ($cssFiles as $cssFile) { if (is_file($cssDir . $cssFile) && !in_array($cssFile, array(".", "..", "@"))) { $cssTab[] = $cssFile; } } isset($cssTab) ? sort($cssTab) : ($cssTab = false); return $cssTab; }
<?php /** * Création du dossier de favicons */ if (!file_exists(Plugin::path() . 'favicons/')) { $res = mkdir(Plugin::path() . 'favicons/'); if (!$res) { echo 'Impossible de créer le dossier pour stocker les favicons, vérifiez les droits sur le serveur'; } }
function radiorelay_plugin_action() { global $_, $conf, $myUser; //Action de réponse à la commande vocale "Yana, commande de test" switch ($_['action']) { case 'radioRelay_save_radioRelay': Action::write(function ($_, &$response) { $radioRelayManager = new RadioRelay(); if (empty($_['nameRadioRelay'])) { throw new Exception("Le nom est obligatoire"); } if (!is_numeric($_['radioCodeRadioRelay'])) { throw new Exception("Le code radio est obligatoire et doit être numerique"); } $radioRelay = !empty($_['id']) ? $radioRelayManager->getById($_['id']) : new RadioRelay(); $radioRelay->name = $_['nameRadioRelay']; $radioRelay->description = $_['descriptionRadioRelay']; $radioRelay->room = $_['roomRadioRelay']; $radioRelay->pulse = $_['pulseRadioRelay']; $radioRelay->onCommand = $_['onRadioRelay']; $radioRelay->offCommand = $_['offRadioRelay']; $radioRelay->icon = $_['iconRadioRelay']; $radioRelay->radiocode = $_['radioCodeRadioRelay']; $radioRelay->save(); $response['message'] = 'Relais enregistré avec succès'; }, array('plugin_radiorelay' => 'c')); break; case 'radioRelay_delete_radioRelay': Action::write(function ($_, $response) { $radioRelayManager = new RadioRelay(); $radioRelayManager->delete(array('id' => $_['id'])); }, array('plugin_radiorelay' => 'd')); break; case 'radioRelay_plugin_setting': Action::write(function ($_, &$response) { global $conf; $conf->put('plugin_radioRelay_emitter_pin', $_['emiterPin']); $conf->put('plugin_radioRelay_emitter_code', $_['emiterCode']); $response['message'] = 'Configuration enregistrée'; }, array('plugin_radiorelay' => 'c')); break; case 'radioRelay_manual_change_state': Action::write(function ($_, &$response) { radiorelay_plugin_change_state($_['engine'], $_['state']); }, array('plugin_radiorelay' => 'c')); break; case 'radioRelay_vocal_change_state': global $_, $myUser; try { $response['responses'][0]['type'] = 'talk'; if (!$myUser->can('plugin_radiorelay', 'u')) { throw new Exception('Je ne vous connais pas, ou alors vous n\'avez pas le droit, je refuse de faire ça!'); } radiorelay_plugin_change_state($_['engine'], $_['state']); $response['responses'][0]['sentence'] = Personality::response('ORDER_CONFIRMATION'); } catch (Exception $e) { $response['responses'][0]['sentence'] = Personality::response('WORRY_EMOTION') . '! ' . $e->getMessage(); } $json = json_encode($response); echo $json == '[]' ? '{}' : $json; break; case 'radioRelay_plugin_setting': Action::write(function ($_, &$response) { global $conf; $conf->put('plugin_radioRelay_emitter_pin', $_['emiterPin']); $conf->put('plugin_radioRelay_emitter_code', $_['emiterCode']); $response['message'] = 'Configuration modifiée avec succès'; }, array('plugin_radiorelay' => 'u')); break; case 'radioRelay_load_widget': require_once dirname(__FILE__) . '/../dashboard/Widget.class.php'; Action::write(function ($_, &$response) { $widget = new Widget(); $widget = $widget->getById($_['id']); $data = $widget->data(); $content = ''; if (empty($data['relay'])) { $content = 'Choisissez un relais en cliquant sur l \'icone <i class="fa fa-wrench"></i> de la barre du widget'; } else { if (fileperms(Plugin::path() . 'radioEmission') != '36333') { $content .= '<div style="margin:0px;" class="flatBloc pink-color">Attention, les droits vers le fichier <br/> radioEmission sont mal réglés.<br/> Référez vous à <span style="cursor:pointer;text-decoration:underline;" onclick="window.location.href=\'https://github.com/ldleman/yana-server#installation\';">la doc</span> pour les régler</div>'; } $relay = new RadioRelay(); $relay = $relay->getById($data['relay']); $response['title'] = $relay->name; $content .= ' <!-- CSS --> <style> .radiorelay_relay_pane { background: none repeat scroll 0 0 #50597b; list-style-type: none; margin: 0; cursor:default; width: 100%; } .radiorelay_relay_pane li { background: none repeat scroll 0 0 #50597b; display: inline-block; margin: 0 1px 0 0; padding: 10px; cursor:default; vertical-align: top; } .radiorelay_relay_pane li h2 { color: #ffffff; font-size: 16px; margin: 0 0 5px; padding: 0; cursor:default; } .radiorelay_relay_pane li h1 { color: #B6BED9; font-size: 14px; margin: 0 0 10px; padding: 0; cursor:default; } .radiorelay_relay_pane li.radiorelay-case{ background-color: #373f59; width: 55px; cursor:pointer; } .radiorelay-case i{ color:#8b95b8; font-size:50px; transition: all 0.2s ease-in-out; } .radiorelay-case.active i{ color:#ffffff; text-shadow: 0 0 10px #ffffff; } .radiorelay-case.active i.fa-lightbulb-o{ color:#FFED00; text-shadow: 0 0 10px #ffdc00; } .radiorelay-case.active i.fa-power-off{ color:#BDFF00; text-shadow: 0 0 10px #4fff00; } .radiorelay-case.active i.fa-flash{ color:#FFFFFF; text-shadow: 0 0 10px #00FFD9; } .radiorelay-case.active i.fa-gears{ color:#FFFFFF; text-shadow: 0 0 10px #FF00E4; } </style> <!-- CSS --> <ul class="radiorelay_relay_pane"> <li class="radiorelay-case ' . ($relay->state ? 'active' : '') . '" onclick="plugin_radiorelay_change(this,' . $relay->id . ');" style="text-align:center;"> <i title="On/Off" class="' . $relay->icon . '"></i> </li> <li> <h2>' . $relay->description . '</h2> <h1>CODE ' . $relay->radiocode . ($relay->pulse != 0 ? ' - Pulse ' . $relay->pulse . 'µs' : '') . '</h1> </li> </ul> <!-- JS --> <script type="text/javascript"> function plugin_radiorelay_change(element,id){ var state = $(element).hasClass(\'active\') ? 0 : 1 ; $.action( { action : \'radioRelay_manual_change_state\', engine: id, state: state }, function(response){ $(element).toggleClass("active"); } ); } </script> '; } $response['content'] = $content; }); break; case 'radioRelay_edit_widget': require_once dirname(__FILE__) . '/../dashboard/Widget.class.php'; $widget = new Widget(); $widget = $widget->getById($_['id']); $data = $widget->data(); $relayManager = new RadioRelay(); $relays = $relayManager->populate(); $content = '<h3>Relais ciblé</h3>'; if (count($relays) == 0) { $content = 'Aucun relais existant dans yana, <a href="setting.php?section=radioRelay">Créer un relais ?</a>'; } else { $content .= '<select id="relay">'; $content .= '<option value="">-</option>'; foreach ($relays as $relay) { $content .= '<option value="' . $relay->id . '">' . $relay->name . '</option>'; } $content .= '</select>'; } echo $content; break; case 'radioRelay_save_widget': require_once dirname(__FILE__) . '/../dashboard/Widget.class.php'; $widget = new Widget(); $widget = $widget->getById($_['id']); $data = $widget->data(); $data['relay'] = $_['relay']; $widget->data($data); $widget->save(); echo $content; break; } }
// Inluding needed providers require_once Plugin::path('providers/html.php'); require_once Plugin::path('providers/image/lorempixel.php'); require_once Plugin::path('providers/image/placeholdit.php'); require_once Plugin::path('providers/image/500px.php'); require_once Plugin::path('providers/text/base.php'); // Require the Base module require_once Plugin::path('modules/base.php'); // Require the Meta module require_once Plugin::path('providers/wp-meta.php'); require_once Plugin::path('modules/meta.php'); // Require the Post module require_once Plugin::path('providers/wp-post.php'); require_once Plugin::path('modules/post.php'); // Require the Attachment module require_once Plugin::path('providers/wp-attachment.php'); require_once Plugin::path('modules/attachment.php'); // Require the User module require_once Plugin::path('providers/wp-user.php'); require_once Plugin::path('modules/user.php'); // Require the Term module require_once Plugin::path('providers/wp-term.php'); require_once Plugin::path('modules/term.php'); // Require the Comment module require_once Plugin::path('providers/wp-comment.php'); require_once Plugin::path('modules/comment.php'); // Require our Administration Class Plugin::$admin = (require_once Plugin::path('inc/class-fp-admin.php')); // Require our Ajax Class Plugin::$ajax = (require_once Plugin::path('inc/class-fp-ajax.php'));
function plugin_leedUpdateSourcePlugin() { //récupération du fichier $lienMasterLeedPlugin = $_POST['plugin_leedUpdateSource_sourcePlugin']; echo $lienMasterLeedPlugin; create_dirs(Plugin::path() . 'upload/'); $fichierCible = './' . Plugin::path() . 'upload/LeedMasterPlugin.zip'; if (copy($lienMasterLeedPlugin, $fichierCible)) { echo '<h3>Opérations</h3>'; echo 'Fichier <a href="' . $lienMasterLeedPlugin . '">' . $lienMasterLeedPlugin . '</a> téléchargé<br /><br />'; $retour = unzip_leed($fichierCible, './plugins/', false, true); if ($retour) { echo '<b>Opération réalisée avec succès</b><br />'; } else { echo '<b>Opération réalisée avec des erreurs</b>'; } } else { echo 'récupération foireuse du fichier zip'; } // si des plugins sont actifs, les fichiers enabled sont a remplacer par les fichiers disabled // parcourir tous les répertoires de plugins if ($retour) { $dir = './plugins/'; $files = glob($dir . '*/*.plugin.disabled.php'); foreach ($files as $value) { if (file_exists($value) && file_exists(str_replace('.plugin.disabled.php', '.plugin.enabled.php', $value))) { rename($value, str_replace('.plugin.disabled.php', '.plugin.enabled.php', $value)); echo 'renomage du fichier : ' . $value . ' en ' . str_replace('.plugin.disabled.php', '.plugin.enabled.php', $value) . '<br />'; } } } echo '<b>Toutes les opérations sont terminées. Vos plugins sont à jour</b>'; }
<?php namespace Sb\Controller\Admin; use Sb\Controller\AppController; use Cake\Filesystem\Folder; use Cake\Event\Event; use Cake\Core\Configure; use Sb\Libs\Spyc; use Sb\Libs\Sbc; require_once Plugin::path('Sb') . 'libs/Yaml/Spyc.php'; require_once Plugin::path('Sb') . 'libs/Superbake/Sbc.php'; class SbController extends AppController { /** * * @var Sbc object */ public $Sbc; public function beforeFilter(Event $event) { parent::beforeFilter($event); // Layout if (Configure::read('Sb.Croogo')) { $this->layout = 'default_croogo'; } } /** * Redirection to admin_index() */ public function index()
/** * Creates the whole view inside of the FakerPress Administration object * * @since 0.1.0 * * @return void */ public function _action_set_admin_view() { if (!self::$in_plugin) { return; } // Default Page of the plugin $view = (object) array('slug' => Variable::super(INPUT_GET, 'view', 'file', self::$menus[0]->view), 'path' => null); // First we check if the file exists in our plugin folder, otherwhise give the user an error if (!file_exists(Plugin::path("view/{$view->slug}.php"))) { $view->slug = 'error'; } // Define the path for the view we $view->path = Plugin::path("view/{$view->slug}.php"); $view->menu = null; // Define Menu when possible foreach (self::$menus as &$menu) { if ($menu->view !== $view->slug) { continue; } $view->menu = $menu; } // Set the Admin::$view self::$view = apply_filters('fakerpress.view', $view); do_action('fakerpress.view.request', self::$view); do_action('fakerpress.view.request.' . self::$view->slug, self::$view); }
<?php /* @name favicon_IOS @author Cobalt74 <http://www.cobestran.com> @link http://www.cobestran.com @licence CC by nc sa http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ @version 1.0.0 @description Le plugin permet d'ajouter une jolie icone sur IOS */ Plugin::addLink("apple-touch-icon", Plugin::path() . 'images/apple-touch-icon.png');
<?php namespace Garradin; require_once __DIR__ . '/_inc.php'; $page = Utils::get('_u') ?: 'index.php'; $plugin = new Plugin(Utils::get('_p')); define('Garradin\\PLUGIN_ROOT', $plugin->path()); define('Garradin\\PLUGIN_URL', WWW_URL . 'admin/plugin/' . $plugin->id() . '/'); define('Garradin\\PLUGIN_QSP', '?'); $tpl->assign('plugin', $plugin->getInfos()); $tpl->assign('plugin_root', PLUGIN_ROOT); $plugin->call('admin/' . $page);
function leedbrowser_plugin_link(&$events) { foreach ($events as $event) { $event->setLink(Plugin::path() . 'browser.php?event=' . $event->getId() . '&link=' . $event->getLink()); } }
<?php unlink(Plugin::path() . 'constantAPI.php');
function speechcommands_plugin_preference_page() { global $myUser, $_, $conf; if (isset($_['section']) && $_['section'] == 'speechcommands') { if ($myUser != false) { require_once 'SpeechCommand.class.php'; $command = new SpeechCommand(); $commands = $command->populate(); $command->state = 1; $command->confidence = '0.8'; $command = isset($_['id']) ? $command->getById($_['id']) : $command; ?> <div class="span9 userBloc"> <legend>Commandes</legend> <form action="action.php?action=plugin_speechcommands_save" method="POST"> <input type="hidden" value="<?php echo $command->id; ?> " name="id"/> <table class="table table-striped table-bordered"> <tr> <th>Commande</th> <th>Confidence</th> <th>Action</th> <th>Parametre</th> <th>Etat</th> <th></th> </tr> <tr class="command"> <td><?php echo $conf->get('VOCAL_ENTITY_NAME') . ', <input type="text" class="input-medium" value="' . $command->command . '" placeholder="ma phrase ici" name="command">'; ?> </td> <td><input type="number" step="any" class="input-mini" name="confidence" value="<?php echo $command->confidence; ?> "/></td> <td> <select name="type" class="type input-small"> <option <?php echo $command->action == 'gpio' ? 'selected="selected"' : ''; ?> value="gpio">Changer un GPIO (sur le serveur)</option> <option <?php echo $command->action == 'server_command' ? 'selected="selected"' : ''; ?> value="server_command">Executer une commande (sur le serveur)</option> <option <?php echo $command->action == 'url' ? 'selected="selected"' : ''; ?> value="url">Executer une adresse web (sur le serveur)</option> <option <?php echo $command->action == 'client_command' ? 'selected="selected"' : ''; ?> value="client_command">Executer une commande (sur le client)</option> <option <?php echo $command->action == 'talk' ? 'selected="selected"' : ''; ?> value="talk">Parler (sur le client)</option> <option <?php echo $command->action == 'sound' ? 'selected="selected"' : ''; ?> value="sound">Son (sur le client)</option> </select> </td> <td><input type="text" name="parameter" class="input-medium" value="<?php echo $command->parameter; ?> "/></td> <td><input type="checkbox" name="state" <?php echo $command->state == '1' ? 'checked=""checked""' : ''; ?> /></td> <td><input class="btn" type="submit" value="Enregistrer"/></td> </tr> <?php foreach ($commands as $command) { ?> <tr class="command"> <td><?php echo $conf->get('VOCAL_ENTITY_NAME') . ', ' . $command->command; ?> </td> <td><?php echo $command->confidence; ?> </td> <td><?php echo $command->action; ?> </td> <td><?php echo $command->parameter; ?> </td> <td><?php echo $command->state == '1' ? 'Actif' : 'Inactif'; ?> </td> <td> <a class="btn" title="modifier" href="setting.php?section=speechcommands&id=<?php echo $command->id; ?> "><i class="fa fa-edit"></i></a> <a class="btn" title="supprimer" href="action.php?action=plugin_speechcommands_delete&id=<?php echo $command->id; ?> "><i class="fa fa-times"></i></a> </td> </tr> <?php } ?> </table> </form> <h2> <i class="fa fa-book"></i> Explications</h2> <p>Ce plugin permet d'ajouter des actions en fonction de certaines phrases prononcées que vous pouvez choisir et ajouter à l\'infini.</p> <p>Notez bien que ce plugin est optimisé pour yana android et qu'en fonction de l'action souhaitée, celle ci s'execute sur le serveur ou sur le client ( Ceci est spéficié dans l'action à choisir). </p> <ul> <li>Le champ <strong>Commande</strong> représente la phrase a enoncer pour lancer l'action spécifiée</li> <li>Le champ <strong>Confidence</strong> représente la sensibilité de reconnaissance de la phrase (chiffre entre 0 et 1) plus cette valeur est basse, plus la phrase sera reconnue facilement</li> <li>Le champ <strong>Action</strong> représente le type d'action a effectuer (lancer une url, parler, etc..)</li> <li>Le champ <strong>Parametre</strong> représente la valeur de cette action (ex : si l'action est "parler" parametre sera la phrase qui doit être dite). <br><strong>NB :</strong> Pour l'action "gpio" le paramêtre doit être au format : "n°gpio,etat" par exemple pour mettre le gpio 2 à 1 : "2,1". </li> <li>Le champ <strong>Etat</strong> active ou desactive cette commande, vous pouvez ainsi la désactiver temporairement sans la supprimer définitivement</li> </ul> <h4>Examples</h4> <img src="<?php echo Plugin::path(); ?> /img/sample.png"> </div> <?php } else { ?> <div id="main" class="wrapper clearfix"> <article> <h3>Vous devez être connecté</h3> </article> </div> <?php } } }
<?php $key = genererKeyAPI(); $constant = "<?php\ndefine('PLUGIN_ENABLED','1');\ndefine('KEY','" . $key . "');\n?>"; file_put_contents(Plugin::path() . 'constantAPI.php', $constant); function genererKeyAPI() { $j = 0; $passwd = ""; while ($j != 8) { $i = rand(48, 122); if ($i > 47 && $i < 58 || $i > 96 && $i < 123 || $i > 65 && $i < 90) { $i = chr($i); $passwd .= $i; $j++; } } return $passwd; }
function vocalinfo_plugin_preference_page() { global $myUser, $_, $conf; if (isset($_['section']) && $_['section'] == 'preference' && @$_['block'] == 'vocalinfo') { if ($myUser != false) { Plugin::addjs("/js/woeid.js", true); Plugin::addJs('/js/main.js', true); $commands = json_decode(file_get_contents(Plugin::path() . '/' . VOCALINFO_COMMAND_FILE), true); ?> <div class="span9 userBloc"> <legend>Commandes</legend> <table class="table table-striped table-bordered"> <tr> <th></th> <th>Commande</th> <th>Confidence</th> </tr> <?php foreach ($commands as $key => $command) { ?> <tr class="command" data-id="<?php echo $key; ?> "><td><input type="checkbox" <?php echo $command['disabled'] == 'true' ? '' : 'checked="checked"'; ?> class="enabled"></td><td><?php echo $conf->get('VOCAL_ENTITY_NAME') . ' ' . $command['command']; ?> </td><td><input type="text" class="confidence" value="<?php echo $command['confidence']; ?> "/></td></tr> <?php } ?> <tr> <td colspan="3"><div class="btn" onclick="plugin_vocalinfo_save();">Enregistrer</div></td> </tr> </table> <form class="form-inline" action="action.php?action=vocalinfo_plugin_setting" method="POST"> <legend>Météo</legend> <label>Tapez le nom de votre ville et votre pays</label> <input type="text" class="input-xlarge" name="weather_place" value="<?php echo $conf->get('plugin_vocalinfo_place'); ?> " placeholder="Votre ville"> <span id="weather_query" class="btn">Chercher</span> <br/><br/><label>Votre Identifiant WOEID</label> <input type="text" class="input-large" name="woeid" value="<?php echo $conf->get('plugin_vocalinfo_woeid'); ?> " placeholder="Votre WOEID"> <button type="submit" class="btn">Sauvegarder</button> </form> </div> <?php } else { ?> <div id="main" class="wrapper clearfix"> <article> <h3>Vous devez être connecté</h3> </article> </div> <?php } } }
function radioRelay_display($room) { global $_; $radioRelayManager = new RadioRelay(); $radioRelays = $radioRelayManager->loadAll(array('room' => $room->getId())); if (count($radioRelays) > 0) { foreach ($radioRelays as $radioRelay) { ?> <div class="flatBloc blue-color" style="max-width:30%;display:inline-block;vertical-align:top;"> <h3><?php echo $radioRelay->getName(); ?> </h3> <p><?php echo $radioRelay->getDescription(); ?> </p><ul> <li>Code radio : <code><?php echo $radioRelay->getRadioCode(); ?> </code></li> <li>Type : <span>Interrupteur radio</span></li> <li>Emplacement : <span><?php echo $room->getName(); ?> </span></li> </ul> <?php if (fileperms(Plugin::path() . 'radioEmission') != '36333') { ?> <div class="flatBloc pink-color">Attention, les droits vers le fichier <br/> radioEmission sont mal réglés.<br/> Référez vous à <span style="cursor:pointer;text-decoration:underline;" onclick="window.location.href='https://github.com/ldleman/yana-server#installation';">la doc</span> pour les régler</div><?php } ?> <a class="flatBloc" title="Activer le relais" href="action.php?action=radioRelay_change_state&engine=<?php echo $radioRelay->getId(); ?> &code=<?php echo $radioRelay->getRadioCode(); ?> &state=on"><i class="fa fa-hand-o-up icon-white"></i></a> <?php if ($radioRelay->getPulse() == 0) { ?> <a class="flatBloc" title="Désactiver le relais" href="action.php?action=radioRelay_change_state&engine=<?php echo $radioRelay->getId(); ?> &code=<?php echo $radioRelay->getRadioCode(); ?> &state=off"><i class="fa fa-hand-o-down icon-white"></i></a> <?php } ?> </div> <?php } } else { if (isset($_['id'])) { echo '<div>Aucun relais radio ajouté dans la pièce <code>' . $room->getName() . '</code>, <a href="setting.php?section=radioRelay&room=' . $room->getId() . '">ajouter un relais radio ?</a></div>'; } } }
<?php /** * Création du dossier de favicons */ $pluginsPath = Plugin::path() . 'favicons/'; if (file_exists($pluginsPath)) { $favicons = glob($pluginsPath . '*'); foreach ($favicons as $favicon) { unlink($favicon); } unlink($pluginsPath); }