Exemple #1
0
 /**
  * Checks whether a class implements an interface or not.
  * 
  * @param string $class Class to check
  * @param string $interface Interface to check
  * 
  * @return boolean Implements?
  */
 public static function classImplements($class, $interface)
 {
     $ref = new ReflectionClass($class);
     try {
         return $ref->implementsInterface($interface);
     } catch (Exception $e) {
         Functions::log(Functions::LOG_ERROR, $e->getMessage());
         return false;
     }
 }
Exemple #2
0
 public static function display($file, $returnValue = false)
 {
     global $errorMessage, $token;
     $user = self::getReadOnlyUser();
     $tplFile = self::getThemePath() . basename($file) . '.php';
     if (!is_file($tplFile)) {
         Functions::log(Functions::LOG_ERROR, 'Template for "' . $file . '.php" missing.');
     }
     if (strpos(file_get_contents($tplFile), 'global $') !== false) {
         Functions::log(Functions::LOG_ERROR, 'Invalid call in template "' . $file . '.php".');
     }
     if ($returnValue) {
         return $token->auto_append(file_get_contents($tplFile));
     } else {
         ob_start();
         include $tplFile;
         $content = ob_get_contents();
         ob_get_clean();
         $content = $token->auto_append($content);
         echo $content;
     }
 }
function radioRelay_action_radioRelay()
{
    global $_, $conf, $myUser;
    //Mise à jour des droits
    $myUser->loadRight();
    switch ($_['action']) {
        case 'radioRelay_delete_radioRelay':
            if ($myUser->can('radio relais', 'd')) {
                $radioRelayManager = new RadioRelay();
                $radioRelayManager->delete(array('id' => $_['id']));
                header('location:setting.php?section=radioRelay');
            } else {
                header('location:setting.php?section=radioRelay&error=Vous n\'avez pas le droit de faire ça!');
            }
            break;
        case 'radioRelay_plugin_setting':
            $conf->put('plugin_radioRelay_emitter_pin', $_['emiterPin']);
            $conf->put('plugin_radioRelay_emitter_code', $_['emiterCode']);
            header('location: setting.php?section=preference&block=radioRelay');
            break;
        case 'radioRelay_add_radioRelay':
            //Vérifie si on veut modifier ou ajouter un relai
            $right_toverify = isset($_['id']) ? 'u' : 'c';
            if ($myUser->can('radio relais', $right_toverify)) {
                $radioRelay = new RadioRelay();
                //Si modification on charge la ligne au lieu de la créer
                if ($right_toverify == "u") {
                    $radioRelay = $radioRelay->load(array("id" => $_['id']));
                }
                $radioRelay->setName($_['nameRadioRelay']);
                $radioRelay->setDescription($_['descriptionRadioRelay']);
                $radioRelay->setRadioCode($_['radioCodeRadioRelay']);
                $radioRelay->setRoom($_['roomRadioRelay']);
                $radioRelay->setPulse($_['pulseRadioRelay']);
                $radioRelay->save();
                header('location:setting.php?section=radioRelay');
            } else {
                header('location:setting.php?section=radioRelay&error=Vous n\'avez pas le droit de faire ça!');
            }
            break;
        case 'radioRelay_change_state':
            global $_, $myUser;
            if ($myUser->can('radio relais', 'u')) {
                $radioRelay = new RadioRelay();
                $radioRelay = $radioRelay->getById($_['engine']);
                Event::emit('relay_change_state', array('relay' => $radioRelay, 'state' => $_['state']));
                if ($radioRelay->getPulse() == 0) {
                    $cmd = dirname(__FILE__) . '/radioEmission ' . $conf->get('plugin_radioRelay_emitter_pin') . ' ' . $conf->get('plugin_radioRelay_emitter_code') . ' ' . $radioRelay->getRadioCode() . ' ' . $_['state'];
                } else {
                    $cmd = dirname(__FILE__) . '/radioEmission ' . $conf->get('plugin_radioRelay_emitter_pin') . ' ' . $conf->get('plugin_radioRelay_emitter_code') . ' ' . $radioRelay->getRadioCode() . ' pulse ' . $radioRelay->getPulse();
                }
                //TODO change bdd state
                Functions::log('Launch system command : ' . $cmd);
                system($cmd, $out);
                if (!isset($_['webservice'])) {
                    header('location:index.php?module=room&id=' . $radioRelay->getRoom());
                } else {
                    $affirmations = array('A vos ordres!', 'Bien!', 'Oui commandant!', 'Avec plaisir!', 'J\'aime vous obéir!', 'Avec plaisir!', 'Certainement!', 'Je fais ça sans tarder!', 'Avec plaisir!', 'Oui chef!');
                    $affirmation = $affirmations[rand(0, count($affirmations) - 1)];
                    $response = array('responses' => array(array('type' => 'talk', 'sentence' => $affirmation)));
                    $json = json_encode($response);
                    echo $json == '[]' ? '{}' : $json;
                }
            } else {
                $response = array('responses' => array(array('type' => 'talk', 'sentence' => 'Je ne vous connais pas, je refuse de faire ça!')));
                echo json_encode($response);
            }
            break;
    }
}
Exemple #4
0
    unset($_POST[$token->getTokenName()]);
    $pageCreators = PluginHelper::delegate('__onCreatePage', array(substr($pageName, 0, strlen($pageName) - 4), $_GET));
    if (count($pageCreators) == 1) {
        // Get single page creator
        foreach ($pageCreators as $p) {
            $pageCreator = $p;
        }
        // Does it implement PageCreator?
        if (!$pageCreator instanceof PageCreator) {
            Functions::log(Functions::LOG_ERROR, get_class($pageCreator) . ' does not implement interface PageCreator');
        } else {
            Templates::assign('pageTitle', $pageCreator->getTitle());
            Templates::assign('customContent', $pageCreator->getContent());
            Templates::display('custom');
        }
        exit;
    } else {
        if (count($pageCreators) > 1) {
            // CLASH OF PLUGINS!!
            $errorMessage = 'Page Creator conflict for page ' . $pageName . ':<br /><br /><ul>';
            foreach ($pageCreators as $package => $pageCreator) {
                $errorMessage .= '<b>' . $package . '</b>: ' . get_class($pageCreator);
            }
            $errorMessage .= '</ul>';
            Functions::log(Functions::LOG_ERROR, $errorMessage);
            exit;
        }
    }
}
// Else, show 404 page
Templates::display('404');
function radiorelay_plugin_change_state($engine, $state)
{
    global $conf;
    $radioRelay = new RadioRelay();
    $radioRelay = $radioRelay->getById($engine);
    $cmd = dirname(__FILE__) . '/radioEmission ' . $conf->get('plugin_radioRelay_emitter_pin') . ' ' . $conf->get('plugin_radioRelay_emitter_code') . ' ' . $radioRelay->radiocode . ' ';
    $cmd .= $radioRelay->pulse == 0 ? $state == 1 ? 'on' : 'off' : 'pulse ' . $radioRelay->pulse;
    $radioRelay->state = $state;
    Functions::log('Launch system command : ' . $cmd);
    system($cmd, $out);
    $radioRelay->save();
}
Exemple #6
0
 protected function error($msg, $sql, $code)
 {
     Functions::log(Functions::LOG_ERROR, $msg . '<br /><br /><code class="important">' . $sql . '</code>');
     /* die('
     				<h1>Database Error ('.$code.')</h1>
     
     				'.(!is_null($sql) ? '<code>' . $sql . '</code>' : '').'
     				<p>'.$msg.'</p>
     			'); */
 }
function wireRelay_action_wireRelay()
{
    global $_, $conf, $myUser;
    switch ($_['action']) {
        case 'wireRelay_delete_wireRelay':
            if ($myUser->can('relais filaire', 'd')) {
                $wireRelayManager = new WireRelay();
                $wireRelayManager->delete(array('id' => $_['id']));
            }
            header('location:setting.php?section=wireRelay');
            break;
        case 'wireRelay_plugin_setting':
            $conf->put('plugin_wireRelay_emitter_pin', $_['emiterPin']);
            $conf->put('plugin_wireRelay_emitter_code', $_['emiterCode']);
            header('location: setting.php?section=preference&block=wireRelay');
            break;
        case 'wireRelay_add_wireRelay':
            if ($myUser->can('relais filaire', $_['id'] != '' ? 'u' : 'c')) {
                $wireRelayManager = new WireRelay();
                $wireRelay = $_['id'] != '' ? $wireRelayManager->getById($_['id']) : new WireRelay();
                $wireRelay->setName($_['nameWireRelay']);
                $wireRelay->setDescription($_['descriptionWireRelay']);
                $wireRelay->setPin($_['pinWireRelay']);
                $wireRelay->setRoom($_['roomWireRelay']);
                $wireRelay->setPulse($_['pulseWireRelay']);
                $wireRelay->save();
            }
            header('location:setting.php?section=wireRelay');
            break;
        case 'wireRelay_change_state':
            global $_, $myUser;
            if ($myUser->can('relais filaire', 'u')) {
                $wireRelay = new WireRelay();
                $wireRelay = $wireRelay->getById($_['engine']);
                //TODO - remplacer par Gpio::mode($wireRelay->getPin(),'out');
                $cmd = '/usr/local/bin/gpio mode ' . $wireRelay->getPin() . ' out';
                Functions::log('Launch system command : ' . $cmd);
                system($cmd, $out);
                if ($wireRelay->getPulse() == 0) {
                    //TODO - remplacer par Gpio::write($wireRelay->getPin(),$_['state']);
                    $cmd = '/usr/local/bin/gpio write ' . $wireRelay->getPin() . ' ' . $_['state'];
                    Functions::log('Launch system command : ' . $cmd);
                    system($cmd, $out);
                } else {
                    //TODO - remplacer par Gpio::write($wireRelay->getPin(),1);
                    $cmd = '/usr/local/bin/gpio write ' . $wireRelay->getPin() . ' 1';
                    system($cmd, $out);
                    usleep($wireRelay->getPulse());
                    //TODO - remplacer par Gpio::write($wireRelay->getPin(),0);
                    $cmd = '/usr/local/bin/gpio write ' . $wireRelay->getPin() . ' 0';
                    Functions::log('Launch system command : ' . $cmd);
                    system($cmd, $out);
                }
                //TODO change bdd state
                if (!isset($_['webservice'])) {
                    header('location:index.php?module=room&id=' . $wireRelay->getRoom());
                } else {
                    $affirmations = array('A vos ordres!', 'Bien!', 'Oui commandant!', 'Avec plaisir!', 'J\'aime vous obéir!', 'Avec plaisir!', 'Certainement!', 'Je fais ça sans tarder!', 'Avec plaisir!', 'Oui chef!');
                    $affirmation = $affirmations[rand(0, count($affirmations) - 1)];
                    $response = array('responses' => array(array('type' => 'talk', 'sentence' => $affirmation)));
                    $json = json_encode($response);
                    echo $json == '[]' ? '{}' : $json;
                }
            } else {
                $response = array('responses' => array(array('type' => 'talk', 'sentence' => 'Je ne vous connais pas, je refuse de faire ça!')));
                echo json_encode($response);
            }
            break;
    }
}
 public static function alterBase($versions, $current)
 {
     $manager = new User();
     foreach ($versions as $version) {
         if ($version['version'] <= $current) {
             continue;
         }
         foreach ($version['sql'] as $command) {
             $sql = str_replace(array('{PREFIX}'), array(MYSQL_PREFIX), $command);
             Functions::log('Execute alter base query : ' . $sql);
             $manager->customQuery($sql);
         }
     }
 }
 public static function command($cmd)
 {
     Functions::log('Launch system command : ' . $cmd);
     return system($cmd);
 }
Exemple #10
0
 /**
  * Load plugins that are marked as active.
  * This also checks for the implementation of PluginInterface in the main class of the plugin.
  */
 public static function loadActivePlugins()
 {
     $plugins = self::getActivePlugins();
     foreach ($plugins as $plugin) {
         try {
             $pluginClass = self::getEntryPointClassForPlugin($plugin);
             // Load class
             include_once PATH . 'plugins/' . $plugin->getPackageName() . '/Plugin.php';
             // Finally, start plugin
             $p = new $pluginClass($plugin->getPackageName(), $plugin->getTitle(), $plugin->getDescription(), $plugin->getAuthor(), $plugin->getURL(), 1, $plugin->getID());
             if (!$p instanceof PluginInterface) {
                 throw new InvalidManifestException('Plugin ' . $plugin->getPackageName() . ' does not implement PluginInterface.', 42);
             }
             $plugins[$plugin->getPackageName()] = $p;
         } catch (InvalidManifestException $e) {
             Functions::log(Functions::LOG_ERROR, $e->getMessage());
         } catch (InvalidPluginException $e) {
             Functions::log(Functions::LOG_ERROR, $e->getMessage());
         }
     }
     self::$loadedPlugins = $plugins;
 }
Exemple #11
0
 /** FILM REVIEWS **/
 public function scrapeFilmUserReviews()
 {
     $numPages = 1090;
     // This number we've got after having run scrapeFilmList()
     for ($page = 1; $page <= $numPages; $page++) {
         Functions::log(PHP_EOL . "Page " . $page);
         Functions::log("========================");
         $pageFilms = $this->_retrieveFilmListPage($page);
         $films = $this->_parseFilmListPage($pageFilms);
         foreach ($films as $film) {
             Functions::log($film['name']);
             $filmHtml = $this->_retrieveFilmReviewsHtml($film['id']);
             $filmReviews = $this->parseFilmReviews($filmHtml, $film['id']);
             // Let's store in the DB
             $db = new Database(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
             $this->_saveFilmReviewsDB($db, $filmReviews);
         }
     }
 }