/**
 * Title
 *
 * Description
 *
 * @access public
 */
 function poll_device($id)
 {
     $rec = SQLSelectOne("SELECT * FROM modbusdevices WHERE ID='" . (int) $id . "'");
     if (!$rec['ID']) {
         return;
     }
     $rec['CHECK_LATEST'] = date('Y-m-d H:i:s');
     $rec['CHECK_NEXT'] = date('Y-m-d H:i:s', time() + (int) $rec['POLLPERIOD']);
     SQLUpdate('modbusdevices', $rec);
     if ($rec['LINKED_OBJECT'] && $rec['LINKED_PROPERTY'] && ($rec['REQUEST_TYPE'] == 'FC5' || $rec['REQUEST_TYPE'] == 'FC6' || $rec['REQUEST_TYPE'] == 'FC15' || $rec['REQUEST_TYPE'] == 'FC16' || $rec['REQUEST_TYPE'] == 'FC23')) {
         $rec['DATA'] = getGlobal($rec['LINKED_OBJECT'] . '.' . $rec['LINKED_PROPERTY']);
     }
     require_once dirname(__FILE__) . '/ModbusMaster.php';
     $modbus = new ModbusMaster($rec['HOST'], $rec['PROTOCOL']);
     if ($rec['PORT']) {
         $modbus->port = $rec['PORT'];
     }
     if ($rec['REQUEST_TYPE'] == 'FC1') {
         //FC1 Read coils
         try {
             $recData = $modbus->readCoils($rec['DEVICE_ID'], $rec['REQUEST_START'], $rec['REQUEST_TOTAL']);
             if (is_array($recData)) {
                 foreach ($recData as $k => $v) {
                     $recData[$k] = (int) $v;
                 }
             }
         } catch (Exception $e) {
             // Print error information if any
             $rec['LOG'] = date('Y-m-d H:i:s') . " FC1 Error: {$modbus} {$e}\n" . $rec['LOG'];
         }
     } elseif ($rec['REQUEST_TYPE'] == 'FC2') {
         //FC2 Read input discretes
         try {
             $recData = $modbus->readInputDiscretes($rec['DEVICE_ID'], $rec['REQUEST_START'], $rec['REQUEST_TOTAL']);
             if (is_array($recData)) {
                 foreach ($recData as $k => $v) {
                     $recData[$k] = (int) $v;
                 }
             }
         } catch (Exception $e) {
             // Print error information if any
             $rec['LOG'] = date('Y-m-d H:i:s') . " FC2 Error: {$modbus} {$e}\n" . $rec['LOG'];
         }
     } elseif ($rec['REQUEST_TYPE'] == 'FC3') {
         //FC3 Read holding registers
         try {
             $recData = $modbus->readMultipleRegisters($rec['DEVICE_ID'], $rec['REQUEST_START'], $rec['REQUEST_TOTAL']);
         } catch (Exception $e) {
             // Print error information if any
             $rec['LOG'] = date('Y-m-d H:i:s') . " FC3 Error: {$modbus} {$e}\n" . $rec['LOG'];
         }
     } elseif ($rec['REQUEST_TYPE'] == 'FC4') {
         //FC4 Read holding input registers
         try {
             $recData = $modbus->readMultipleInputRegisters($rec['DEVICE_ID'], $rec['REQUEST_START'], $rec['REQUEST_TOTAL']);
         } catch (Exception $e) {
             // Print error information if any
             $rec['LOG'] = date('Y-m-d H:i:s') . " FC4 Error: {$modbus} {$e}\n" . $rec['LOG'];
         }
     } elseif ($rec['REQUEST_TYPE'] == 'FC5') {
         //FC5 Write single coil
         if ((int) $rec['DATA']) {
             $data_set = array(TRUE);
         } else {
             $data_set = array(FALSE);
         }
         try {
             $modbus->writeSingleCoil($rec['DEVICE_ID'], $rec['REQUEST_START'], $data_set);
         } catch (Exception $e) {
             $rec['LOG'] = date('Y-m-d H:i:s') . " FC5 Error: {$modbus} {$e}\n" . $rec['LOG'];
         }
     } elseif ($rec['REQUEST_TYPE'] == 'FC6') {
         //FC6 Write single register
         try {
             $data_set = array((int) $rec['DATA']);
             if ($rec['RESPONSE_CONVERT'] == 'r2f') {
                 $dataTypes = array("REAL");
                 $swapregs = false;
             } elseif ($rec['RESPONSE_CONVERT'] == 'r2fs') {
                 $dataTypes = array("REAL");
                 $swapregs = true;
             } elseif ($rec['RESPONSE_CONVERT'] == 'd2i' || $rec['RESPONSE_CONVERT'] == 'dw2i') {
                 $dataTypes = array("DINT");
                 $swapregs = false;
             } elseif ($rec['RESPONSE_CONVERT'] == 'd2is' || $rec['RESPONSE_CONVERT'] == 'dw2is') {
                 $dataTypes = array("DINT");
                 $swapregs = true;
             } else {
                 $dataTypes = array("INT");
                 $swapregs = false;
             }
             $recData = $modbus->writeSingleRegister($rec['DEVICE_ID'], $rec['REQUEST_START'], $data_set, $dataTypes, $swapregs);
         } catch (Exception $e) {
             // Print error information if any
             $rec['LOG'] = date('Y-m-d H:i:s') . " FC6 Error: {$modbus} {$e}\n" . $rec['LOG'];
         }
     } elseif ($rec['REQUEST_TYPE'] == 'FC15') {
         //FC15 Write multiple coils
         $data_set = explode(',', $rec['DATA']);
         foreach ($data_set as $k => $v) {
             $data_set[$k] = (bool) $v;
         }
         try {
             $modbus->writeMultipleCoils($rec['DEVICE_ID'], $rec['REQUEST_START'], $data_set);
         } catch (Exception $e) {
             $rec['LOG'] = date('Y-m-d H:i:s') . " FC15 Error: {$modbus} {$e}\n" . $rec['LOG'];
         }
     } elseif ($rec['REQUEST_TYPE'] == 'FC16') {
         //FC16 Write multiple registers
         try {
             $data_set = explode(',', $rec['DATA']);
             $dataTypes = array();
             foreach ($data_set as $k => $v) {
                 if ($rec['RESPONSE_CONVERT'] == 'r2f') {
                     $dataTypes[] = "REAL";
                     $data_set[$k] = (double) $v;
                     $swapregs = false;
                 } elseif ($rec['RESPONSE_CONVERT'] == 'r2fs') {
                     $dataTypes[] = "REAL";
                     $data_set[$k] = (double) $v;
                     $swapregs = true;
                 } elseif ($rec['RESPONSE_CONVERT'] == 'd2i' || $rec['RESPONSE_CONVERT'] == 'dw2i') {
                     $dataTypes[] = "DINT";
                     $data_set[$k] = (int) $v;
                     $swapregs = false;
                 } elseif ($rec['RESPONSE_CONVERT'] == 'd2is' || $rec['RESPONSE_CONVERT'] == 'dw2is') {
                     $dataTypes[] = "DINT";
                     $data_set[$k] = (int) $v;
                     $swapregs = true;
                 } else {
                     $data_set[$k] = (int) $v;
                     $dataTypes[] = "INT";
                     $swapregs = false;
                 }
             }
             $recData = $modbus->writeMultipleRegister($rec['DEVICE_ID'], $rec['REQUEST_START'], $data_set, $dataTypes, $swapregs);
         } catch (Exception $e) {
             // Print error information if any
             $rec['LOG'] = date('Y-m-d H:i:s') . " FC16 Error: {$modbus} {$e}\n" . $rec['LOG'];
         }
     } elseif ($rec['REQUEST_TYPE'] == 'FC23') {
         //FC23 Read/Write multiple registers
         //TO-DO
     }
     //echo $rec['LOG'];exit;
     if ($rec['REQUEST_TYPE'] == 'FC1' || $rec['REQUEST_TYPE'] == 'FC2' || $rec['REQUEST_TYPE'] == 'FC3' || $rec['REQUEST_TYPE'] == 'FC4' && is_array($recData)) {
         // PROCESS RESPONSE
         if ($rec['RESPONSE_CONVERT'] == 'r2f') {
             //REAL to Float
             $values = array_chunk($recData, 4);
             $recData = array();
             foreach ($values as $bytes) {
                 echo $recData[] = PhpType::bytes2float($bytes, false);
             }
         } elseif ($rec['RESPONSE_CONVERT'] == 'r2fs') {
             //REAL to Float (swap regs)
             $values = array_chunk($recData, 4);
             $recData = array();
             foreach ($values as $bytes) {
                 echo $recData[] = PhpType::bytes2float($bytes, true);
             }
         } elseif ($rec['RESPONSE_CONVERT'] == 'd2i') {
             //DINT to integer
             $values = array_chunk($recData, 4);
             $recData = array();
             foreach ($values as $bytes) {
                 echo $recData[] = PhpType::bytes2signedInt($bytes, false);
             }
         } elseif ($rec['RESPONSE_CONVERT'] == 'd2is') {
             //DINT to integer (swap regs)
             $values = array_chunk($recData, 4);
             $recData = array();
             foreach ($values as $bytes) {
                 echo $recData[] = PhpType::bytes2signedInt($bytes, true);
             }
         } elseif ($rec['RESPONSE_CONVERT'] == 'dw2i') {
             //DWORD to integer
             $values = array_chunk($recData, 4);
             $recData = array();
             foreach ($values as $bytes) {
                 $recData[] = PhpType::bytes2unsignedInt($bytes, false);
             }
         } elseif ($rec['RESPONSE_CONVERT'] == 'dw2is') {
             //DWORD to integer (swap regs)
             $values = array_chunk($recData, 4);
             $recData = array();
             foreach ($values as $bytes) {
                 $recData[] = PhpType::bytes2unsignedInt($bytes, true);
             }
         } elseif ($rec['RESPONSE_CONVERT'] == 'i2i') {
             //INT to integer
             $values = array_chunk($recData, 2);
             $recData = array();
             foreach ($values as $bytes) {
                 $recData[] = PhpType::bytes2signedInt($bytes, false);
             }
         } elseif ($rec['RESPONSE_CONVERT'] == 'w2i') {
             //WORD to integer
             $values = array_chunk($recData, 2);
             $recData = array();
             foreach ($values as $bytes) {
                 $recData[] = PhpType::bytes2unsignedInt($bytes, false);
             }
         } elseif ($rec['RESPONSE_CONVERT'] == 's') {
             //String
             $recData = array(PhpType::bytes2string($recData));
         } else {
             //
         }
         $result = implode(',', $recData);
         if ($result && $result != $rec['DATA']) {
             $rec['LOG'] = date('Y-m-d H:i:s') . " " . $result . "\n" . $rec['LOG'];
         }
         $rec['DATA'] = $result;
         SQLUpdate('modbusdevices', $rec);
         if ($rec['LINKED_OBJECT'] && $rec['LINKED_PROPERTY']) {
             setGlobal($rec['LINKED_OBJECT'] . '.' . $rec['LINKED_PROPERTY'], $rec['DATA'], array($this->name => '0'));
         }
     } else {
         SQLUpdate('modbusdevices', $rec);
     }
 }
Example #2
0
/**
* Title
*
* Description
*
* @access public
*/
 function say($ph, $level=0) {
 global $commandLine;
 global $voicemode;

 /*
  if ($commandLine) {
   echo utf2win($ph);
  } else {
   echo $ph;
  }
  */

  $rec=array();
  $rec['MESSAGE']=$ph;
  $rec['ADDED']=date('Y-m-d H:i:s');
  $rec['ROOM_ID']=0;
  $rec['MEMBER_ID']=0;

  if ($level>0) {
   $rec['IMPORTANCE']=$level;
  }

  SQLInsert('shouts', $rec);

  if ($level>=(int)getGlobal('minMsgLevel')) { //$voicemode!='off' && 

   $lang='en';
   if (defined('SETTINGS_SITE_LANGUAGE')) {
    $lang=SETTINGS_SITE_LANGUAGE;
   }
   if (defined('SETTINGS_VOICE_LANGUAGE')) {
    $lang=SETTINGS_VOICE_LANGUAGE;
   }

   $google_file=GoogleTTS($ph, $lang);
   if ($google_file) {
    @touch($google_file);
    playSound($google_file, 1, $level);
   } else {
    //getObject("alice")->raiseEvent("say", array("say"=>$ph));
    safe_exec('cscript '.DOC_ROOT.'/rc/sapi.js '.$ph, 1, $level);
   }
  }
  postToTwitter($ph);

  global $noPatternMode;
  if (!$noPatternMode) {
   include_once(DIR_MODULES.'patterns/patterns.class.php');
   $pt=new patterns();
   $pt->checkAllPatterns();
  }
 }
Example #3
0
/**
 * Summary of cycleBody
 * @return void
 */
function cycleBody()
{
    // check main system states
    $objects = getObjectsByClass('systemStates');
    $total = count($objects);
    for ($i = 0; $i < $total; $i++) {
        $oldState = getGlobal($objects[$i]['TITLE'] . '.stateColor');
        callMethod($objects[$i]['TITLE'] . '.checkState');
        $newState = getGlobal($objects[$i]['TITLE'] . '.stateColor');
        if ($newState != $oldState) {
            echo $objects[$i]['TITLE'] . " state changed to " . $newState . PHP_EOL;
            $params = array('STATE' => $newState);
            callMethod($objects[$i]['TITLE'] . '.stateChanged', $params);
        }
    }
}
 public function tick()
 {
     global $config;
     if (time() - $this->last_check > 3) {
         $queue_data = getGlobal('IRCBot1.pushMessage');
         $this->last_check = time();
         if ($queue_data != '') {
             setGlobal('IRCBot1.pushMessage', '');
             $messages = explode("\n", $queue_data);
             $total = count($messages);
             for ($i = 0; $i < $total; $i++) {
                 if ($messages[$i]) {
                     sendMessage($this->socket, $this->config['channel'], iconv('UTF-8', $config['encoding'], $messages[$i]));
                 }
             }
         }
         setGlobal('cycle_app_ircbotRun', time(), 1);
         if (file_exists('./reboot')) {
             global $db;
             $db->Disconnect();
             exit;
         }
     }
 }
Example #5
0
/** 
 * returns a page global 
 * currently an alias for getGlobal
 * @since 3.4.0
 */
function getPageGlobal($var)
{
    return getGlobal($var);
}
Example #6
0
}
if (preg_match_all('/%(\\w{2,}?)\\.(\\w{2,}?)\\|(\\d+)%/isu', $result, $m)) {
    if (!defined('DISABLE_WEBSOCKETS') || DISABLE_WEBSOCKETS == 0) {
        $tracked_properties = array();
        $total = count($m[0]);
        $seen = array();
        $sub_js = '';
        for ($i = 0; $i < $total; $i++) {
            $var = mb_strtolower($m[1][$i] . '.' . $m[2][$i], 'UTF-8');
            if (!$seen[$var]) {
                $tracked_properties[] = $var;
            }
            $seen[$var] = 1;
            $id = 'var_' . preg_replace('/\\W/', '_', $var);
            $sub_js .= "if (obj[i]['PROPERTY']=='{$var}') {\$('.{$id}').html(obj[i]['VALUE']);\$.publish('{$var}.updated', obj[i]['VALUE']);}\n";
            $result = str_replace($m[0][$i], '<span class="' . $id . '">' . getGlobal($var) . '</span>', $result);
        }
        $js = "<script language='javascript'>\$.subscribe('wsConnected', function (_) {\n         var payload;\n         payload = new Object();\n         payload.action = 'Subscribe';\n         payload.data = new Object();\n         payload.data.TYPE='properties';\n         payload.data.PROPERTIES='" . implode(',', $tracked_properties) . "';\n         wsSocket.send(JSON.stringify(payload));\n        });\n";
        $js .= "function processPropertiesUpdate(data) {\n         var obj=jQuery.parseJSON(data);\n         var objCnt = obj.length;\n           if (objCnt) {\n              for(var i=0;i<objCnt;i++) {\n               {$sub_js}\n              }\n           }\n        }";
        $js .= "\$.subscribe('wsData', function (_, response) {\n          if (response.action=='properties') {\n           processPropertiesUpdate(response.data);\n          }\n          });";
        $js .= '</script>';
        $result = str_replace('</body>', $js . '</body>', $result);
    } else {
        $total = count($m[0]);
        $seen = array();
        for ($i = 0; $i < $total; $i++) {
            $var = $m[1][$i] . '.' . $m[2][$i];
            $interval = (int) $m[2][$i] * 1000;
            if (!$interval) {
                $interval = 10000;
            }
Example #7
0
    $object_rec['CLASS_ID'] = $class_rec['ID'];
    SQLUpdate('objects', $object_rec);
}
foreach ($known_fields as $k => $v) {
    $prop_rec = SQLSelectOne("SELECT * FROM properties WHERE TITLE LIKE '" . DBSafe($k) . "' AND CLASS_ID = '" . $object_rec['CLASS_ID'] . "'");
    if (!$prop_rec['ID']) {
        $prop_rec['CLASS_ID'] = $object_rec['CLASS_ID'];
        $prop_rec['TITLE'] = $k;
        $prop_rec['KEEP_HISTORY'] = 7;
        $prop_rec['ID'] = SQLInsert('properties', $prop_rec);
    }
}
$res = '';
$updated = array();
foreach ($known_fields as $k => $v) {
    if ($v < 0) {
        continue;
    }
    $res .= $k . ' = ' . $data[(int) $v] . "\n";
    $old_value = getGlobal('ws.' . $k);
    if ($old_value != $data[(int) $v]) {
        $updated[$k] = 1;
        setGlobal('ws.' . $k, $data[(int) $v]);
    }
}
if ($updated['pressure']) {
    setGlobal('ws.pressureRt', round((double) getGlobal('ws.pressure') / 1.33), 1);
}
echo "OK";
$db->Disconnect();
// closing database connection
Example #8
0
$old_hour = date('h');
if ($_GET['onetime']) {
    $old_minute = -1;
    if (date('i') == '00') {
        $old_hour = -1;
    }
}
$old_date = date('Y-m-d');
$checked_time = 0;
$started_time = time();
echo date("H:i:s") . " running " . basename(__FILE__) . "\n";
while (1) {
    if (time() - $checked_time > 5) {
        $checked_time = time();
        setGlobal(str_replace('.php', '', basename(__FILE__)) . 'Run', time(), 1);
        setGlobal('ThisComputer.uptime', time() - getGlobal('ThisComputer.started_time'));
    }
    $m = date('i');
    $h = date('h');
    $dt = date('Y-m-d');
    if ($m != $old_minute) {
        //echo "new minute\n";
        $sqlQuery = "SELECT ID, TITLE\n                     FROM objects\n                    WHERE {$o_qry}";
        $objects = SQLSelect($sqlQuery);
        $total = count($objects);
        for ($i = 0; $i < $total; $i++) {
            echo date('H:i:s') . ' ' . $objects[$i]['TITLE'] . "->onNewMinute\n";
            getObject($objects[$i]['TITLE'])->setProperty("time", date('Y-m-d H:i:s'));
            getObject($objects[$i]['TITLE'])->raiseEvent("onNewMinute");
        }
        $old_minute = $m;
Example #9
0
/**
* Title
*
* Description
*
* @access public
*/
function say($ph, $level = 0, $member_id = 0)
{
    global $commandLine;
    global $voicemode;
    global $noPatternMode;
    global $ignorePushover;
    global $ignorePushbullet;
    global $ignoreGrowl;
    global $ignoreTwitter;
    /*
    if ($commandLine) {
     echo utf2win($ph);
    } else {
     echo $ph;
    }
    */
    $rec = array();
    $rec['MESSAGE'] = $ph;
    $rec['ADDED'] = date('Y-m-d H:i:s');
    $rec['ROOM_ID'] = 0;
    $rec['MEMBER_ID'] = $member_id;
    if ($level > 0) {
        $rec['IMPORTANCE'] = $level;
    }
    $rec['ID'] = SQLInsert('shouts', $rec);
    if ($member_id) {
        //if (!$noPatternMode) {
        include_once DIR_MODULES . 'patterns/patterns.class.php';
        $pt = new patterns();
        $pt->checkAllPatterns($member_id);
        //}
        return;
    }
    if (defined('SETTINGS_HOOK_BEFORE_SAY') && SETTINGS_HOOK_BEFORE_SAY != '') {
        eval(SETTINGS_HOOK_BEFORE_SAY);
    }
    global $ignoreVoice;
    if ($level >= (int) getGlobal('minMsgLevel') && !$ignoreVoice && !$member_id) {
        //$voicemode!='off' &&
        $lang = 'en';
        if (defined('SETTINGS_SITE_LANGUAGE')) {
            $lang = SETTINGS_SITE_LANGUAGE;
        }
        if (defined('SETTINGS_VOICE_LANGUAGE')) {
            $lang = SETTINGS_VOICE_LANGUAGE;
        }
        if (!defined('SETTINGS_TTS_GOOGLE') || SETTINGS_TTS_GOOGLE) {
            $google_file = GoogleTTS($ph, $lang);
        } else {
            $google_file = false;
        }
        if (!defined('SETTINGS_SPEAK_SIGNAL') || SETTINGS_SPEAK_SIGNAL == '1') {
            $passed = time() - (int) getGlobal('lastSayTime');
            if ($passed > 20) {
                // play intro-sound only if more than 20 seconds passed from the last one
                setGlobal('lastSayTime', time());
                playSound('dingdong', 1, $level);
            }
        }
        if ($google_file) {
            @touch($google_file);
            playSound($google_file, 1, $level);
        } else {
            safe_exec('cscript ' . DOC_ROOT . '/rc/sapi.js ' . $ph, 1, $level);
        }
    }
    if (!$noPatternMode) {
        include_once DIR_MODULES . 'patterns/patterns.class.php';
        $pt = new patterns();
        $pt->checkAllPatterns($member_id);
    }
    if (defined('SETTINGS_PUSHOVER_USER_KEY') && SETTINGS_PUSHOVER_USER_KEY && !$ignorePushover) {
        include_once ROOT . 'lib/pushover/pushover.inc.php';
        if (defined('SETTINGS_PUSHOVER_LEVEL')) {
            if ($level >= SETTINGS_PUSHOVER_LEVEL) {
                postToPushover($ph);
            }
        } elseif ($level > 0) {
            postToPushover($ph);
        }
    }
    if (defined('SETTINGS_PUSHBULLET_KEY') && SETTINGS_PUSHBULLET_KEY && !$ignorePushbullet) {
        include_once ROOT . 'lib/pushbullet/pushbullet.inc.php';
        if (defined('SETTINGS_PUSHBULLET_PREFIX') && SETTINGS_PUSHBULLET_PREFIX) {
            $prefix = SETTINGS_PUSHBULLET_PREFIX . ' ';
        } else {
            $prefix = '';
        }
        if (defined('SETTINGS_PUSHBULLET_LEVEL')) {
            if ($level >= SETTINGS_PUSHBULLET_LEVEL) {
                postToPushbullet($prefix . $ph);
            }
        } elseif ($level > 0) {
            postToPushbullet($prefix . $ph);
        }
    }
    if (defined('SETTINGS_GROWL_ENABLE') && SETTINGS_GROWL_ENABLE && $level >= SETTINGS_GROWL_LEVEL && !$ignoreGrowl) {
        include_once ROOT . 'lib/growl/growl.gntp.php';
        $growl = new Growl(SETTINGS_GROWL_HOST, SETTINGS_GROWL_PASSWORD);
        $growl->setApplication('MajorDoMo', 'Notifications');
        //$growl->registerApplication('http://localhost/img/logo.png');
        $growl->notify($ph);
    }
    if (defined('SETTINGS_TWITTER_CKEY') && SETTINGS_TWITTER_CKEY && !$ignoreTwitter) {
        postToTwitter($ph);
    }
    if (defined('SETTINGS_HOOK_AFTER_SAY') && SETTINGS_HOOK_AFTER_SAY != '') {
        eval(SETTINGS_HOOK_AFTER_SAY);
    }
}
Example #10
0
// CHECK/REPAIR/OPTIMIZE TABLES
$tables = SQLSelect("SHOW TABLES FROM `" . DB_NAME . "`");
$total = count($tables);
for ($i = 0; $i < $total; $i++) {
    $table = $tables[$i]['Tables_in_' . DB_NAME];
    echo 'Checking table [' . $table . '] ...';
    if ($result = SQLExec("CHECK TABLE " . $table . ";")) {
        echo "OK\n";
    } else {
        echo " broken ... repair ...";
        SQLExec("REPAIR TABLE " . $table . ";");
        echo "OK\n";
    }
}
setGlobal('ThisComputer.started_time', time());
if (time() >= getGlobal('ThisComputer.started_time')) {
    SQLExec("DELETE FROM events WHERE ADDED > NOW()");
    SQLExec("DELETE FROM phistory WHERE ADDED > NOW()");
    SQLExec("DELETE FROM history WHERE ADDED > NOW()");
    SQLExec("DELETE FROM shouts WHERE ADDED > NOW()");
    SQLExec("DELETE FROM jobs WHERE PROCESSED = 1");
    SQLExec("DELETE FROM history WHERE (TO_DAYS(NOW()) - TO_DAYS(ADDED)) >= 5");
}
// CHECKING DATA
/*
$tables = array('commands'         => 'commands',
                'owproperties'     => 'onewire',
                'snmpproperties'   => 'snmpdevices',
                'zwave_properties' => 'zwave',
                'mqtt'             => 'mqtt',
                'modbusdevices'    => 'modbus');
$res = SQLSelect("SELECT * FROM commands WHERE {$qry} ORDER BY {$sortby}");
if ($res[0]['ID']) {
    if ($this->action != 'admin') {
        $dynamic_res = array();
        $total = count($res);
        for ($i = 0; $i < $total; $i++) {
            if ($res[$i]['SMART_REPEAT'] && $res[$i]['LINKED_OBJECT']) {
                $obj = getObject($res[$i]['LINKED_OBJECT']);
                $objects = getObjectsByClass($obj->class_id);
                $total_o = count($objects);
                for ($io = 0; $io < $total_o; $io++) {
                    $rec = $res[$i];
                    $rec['ID'] = $res[$i]['ID'] . '_' . $objects[$io]['ID'];
                    $rec['LINKED_OBJECT'] = $objects[$io]['TITLE'];
                    $rec['DATA'] = str_replace('%' . $res[$i]['LINKED_OBJECT'] . '.', '%' . $rec['LINKED_OBJECT'] . '.', $rec['DATA']);
                    $rec['CUR_VALUE'] = getGlobal($rec['LINKED_OBJECT'] . '.' . $rec['LINKED_PROPERTY']);
                    $rec['TITLE'] = $objects[$io]['TITLE'];
                    $dynamic_res[] = $rec;
                }
            } else {
                $dynamic_res[] = $res[$i];
            }
        }
        $res = $dynamic_res;
    }
    $this->processMenuElements($res);
    if ($this->action == 'admin') {
        $res = $this->buildTree_commands($res);
    }
    $out['RESULT'] = $res;
    //$out['RESULT_HTML']=$this->buildHTML($out['RESULT']);
Example #12
0
 /**
  * Title
  *
  * Description
  *
  * @access public
  */
 function pollDevice($device_id, $data = 0)
 {
     $rec = SQLSelectOne("SELECT * FROM zwave_devices WHERE ID='" . $device_id . "'");
     $rec_updated = 0;
     $comments = array();
     $updatedList = array();
     $properties = array();
     $command_classes = array();
     if (!$data) {
         $data = $this->apiCall('/ZWaveAPI/Run/devices[' . $rec['NODE_ID'] . '].instances[' . $rec['INSTANCE_ID'] . ']');
     }
     if (!$data) {
         return 0;
     }
     if ($_GET['debug']) {
         //echo $data->updateTime;exit;
         var_dump($data);
     }
     $updateTime = 0;
     if (!$rec['RAW_DATA']) {
         $rec_updated = 1;
     }
     $rec['RAW_DATA'] = json_encode($data);
     $rec['SENSOR_VALUE'] = '';
     if ($data->data->updateTime) {
         $updateTime = $data->data->updateTime;
     }
     if ($rec['CLASS_BASIC']) {
         $value = $data->commandClasses->{"32"}->data->value;
         if ($value !== $rec['BASIC']) {
             $rec['BASIC'] = $value;
             $rec_updated = 1;
         }
         $command_classes['Basic'] = 32;
         $properties['Basic'] = $rec['BASIC'];
         $updatedList['Basic'] = $data->commandClasses->{"32"}->data->{"updateTime"};
         if ($data->commandClasses->{"32"}->data->{"updateTime"} > $updateTime) {
             $updateTime = $data->commandClasses->{"32"}->data->{"updateTime"};
         }
     }
     if ($rec['CLASS_SENSOR_BINARY']) {
         $sensor_data = $data->commandClasses->{"48"}->data;
         if (isset($data->commandClasses->{"48"}->data->{"1"})) {
             $sensor_data = $data->commandClasses->{"48"}->data->{"1"};
         }
         $value = (int) $sensor_data->level->value;
         if ($value !== $rec['LEVEL']) {
             $rec['LEVEL'] = $value;
             $rec_updated = 1;
         }
         $properties['Level'] = $rec['LEVEL'];
         $command_classes['Level'] = 48;
         $updatedList['Level'] = $sensor_data->{"updateTime"};
         if ($sensor_data->{"updateTime"} > $updateTime) {
             $updateTime = $sensor_data->{"updateTime"};
         }
     }
     if ($rec['CLASS_SENSOR_MULTILEVEL']) {
         // multiple sensor support required!
         //SENSOR_VALUE
         $values = array();
         for ($i = 0; $i < 255; $i++) {
             if (isset($data->commandClasses->{"49"}->data->{"{$i}"})) {
                 $sensor = $data->commandClasses->{"49"}->data->{"{$i}"};
                 $values[] = trim($sensor->sensorTypeString->value) . ': ' . $sensor->val->value . $sensor->scaleString->value;
                 if (trim($sensor->sensorTypeString->value)) {
                     $prop_name = trim($sensor->sensorTypeString->value) . ', ' . $sensor->scaleString->value;
                 } else {
                     $prop_name = "Sensor {$i}";
                 }
                 if ($properties[$prop_name]) {
                     $prop_name .= ' (1)';
                 }
                 $properties[$prop_name] = $sensor->val->value;
                 $command_classes[$prop_name] = 49;
                 $updatedList[$prop_name] = $data->commandClasses->{"49"}->data->{"{$i}"}->{"updateTime"};
                 if ($data->commandClasses->{"49"}->data->{"{$i}"}->{"updateTime"} > $updateTime) {
                     $updateTime = $data->commandClasses->{"49"}->data->{"{$i}"}->{"updateTime"};
                 }
             }
         }
         $value = implode('; ', $values);
         if ($value != $rec['SENSOR_VALUE']) {
             $rec['SENSOR_VALUE'] .= $value . ';';
             $rec_updated = 1;
         }
     }
     if ($rec['CLASS_SWITCH_BINARY']) {
         $value = (int) $data->commandClasses->{"37"}->data->level->value;
         if ($value !== $rec['LEVEL']) {
             $rec['LEVEL'] = $value;
             $rec_updated = 1;
         }
         $properties['Level'] = $rec['LEVEL'];
         $command_classes['Level'] = 37;
         $updatedList['Level'] = $data->commandClasses->{"37"}->data->{"updateTime"};
         if ($data->commandClasses->{"37"}->data->{"updateTime"} > $updateTime) {
             $updateTime = $data->commandClasses->{"37"}->data->{"updateTime"};
         }
     }
     if ($rec['CLASS_SWITCH_MULTILEVEL']) {
         $value = (int) $data->commandClasses->{"38"}->data->level->value;
         if ($value !== $rec['LEVEL']) {
             $rec['LEVEL'] = $value;
             $rec_updated = 1;
         }
         $properties['Level'] = $rec['LEVEL'];
         $command_classes['Level'] = 38;
         $updatedList['Level'] = $data->commandClasses->{"38"}->data->{"updateTime"};
         if ($data->commandClasses->{"38"}->data->{"updateTime"} > $updateTime) {
             $updateTime = $data->commandClasses->{"38"}->data->{"updateTime"};
         }
         $properties['LevelDuration command (level, duration)'] = '';
     }
     if ($rec['CLASS_BATTERY']) {
         $value = (int) $data->commandClasses->{"128"}->data->last->value;
         if ($value != $rec['BATTERY_LEVEL']) {
             $rec['BATTERY_LEVEL'] = $value;
             $rec_updated = 1;
         }
         $command_classes['Battery'] = 128;
         $properties['Battery'] = $rec['BATTERY_LEVEL'];
         $updatedList['Battery'] = $data->commandClasses->{"128"}->data->{"updateTime"};
         if ($data->commandClasses->{"128"}->data->{"updateTime"} > $updateTime) {
             $updateTime = $data->commandClasses->{"128"}->data->{"updateTime"};
         }
     }
     if ($rec['CLASS_METER']) {
         // ... 50
         $values = array();
         for ($i = 0; $i < 255; $i++) {
             if (isset($data->commandClasses->{"50"}->data->{"{$i}"})) {
                 $sensor = $data->commandClasses->{"50"}->data->{"{$i}"};
                 $values[] = trim($sensor->sensorTypeString->value) . ': ' . $sensor->val->value . ' ' . $sensor->scaleString->value;
                 if (trim($sensor->sensorTypeString->value)) {
                     $prop_name = trim($sensor->sensorTypeString->value) . ', ' . $sensor->scaleString->value;
                 } else {
                     $prop_name = "Meter {$i}";
                 }
                 if ($properties[$prop_name]) {
                     $prop_name .= ' (1)';
                 }
                 $command_classes[$prop_name] = 50;
                 $properties[$prop_name] = $sensor->val->value;
                 $updatedList[$prop_name] = $data->commandClasses->{"50"}->data->{"{$i}"}->{"updateTime"};
                 if ($data->commandClasses->{"50"}->data->{"{$i}"}->{"updateTime"} > $updateTime) {
                     $updateTime = $data->commandClasses->{"50"}->data->{"{$i}"}->{"updateTime"};
                 }
             }
         }
         $value = implode('; ', $values);
         if ($value != '') {
             $rec['SENSOR_VALUE'] .= $value . '; ';
             $rec_updated = 1;
         }
     }
     if ($rec['CLASS_SENSOR_ALARM']) {
         // ... $data->commandClasses->{"156"}->data
         if (is_object($data->commandClasses->{"156"}->data->{"0"}->sensorState)) {
             $command_classes['AlarmGeneral'] = 156;
             $properties['AlarmGeneral'] = $data->commandClasses->{"156"}->data->{"0"}->sensorState->value;
             $updatedList['AlarmGeneral'] = $data->commandClasses->{"156"}->data->{"0"}->sensorState->updateTime;
             $value = $properties['AlarmGeneral'];
             if ($value != $rec['LEVEL']) {
                 $rec['LEVEL'] = $value;
                 $rec_updated = 1;
             }
         }
         if (is_object($data->commandClasses->{"156"}->data->{"1"}->sensorState)) {
             $command_classes['AlarmSmoke'] = 156;
             $properties['AlarmSmoke'] = $data->commandClasses->{"156"}->data->{"1"}->sensorState->value;
             $updatedList['AlarmSmoke'] = $data->commandClasses->{"156"}->data->{"1"}->sensorState->updateTime;
         }
         if (is_object($data->commandClasses->{"156"}->data->{"2"}->sensorState)) {
             $command_classes['AlarmCarbonMonoxide'] = 156;
             $properties['AlarmCarbonMonoxide'] = $data->commandClasses->{"156"}->data->{"2"}->sensorState->value;
             $updatedList['AlarmCarbonMonoxide'] = $data->commandClasses->{"156"}->data->{"2"}->sensorState->updateTime;
         }
         if (is_object($data->commandClasses->{"156"}->data->{"3"}->sensorState)) {
             $command_classes['AlarmCarbonDioxide'] = 156;
             $properties['AlarmCarbonDioxide'] = $data->commandClasses->{"156"}->data->{"3"}->sensorState->value;
             $updatedList['AlarmCarbonDioxide'] = $data->commandClasses->{"156"}->data->{"3"}->sensorState->updateTime;
         }
         if (is_object($data->commandClasses->{"156"}->data->{"4"}->sensorState)) {
             $command_classes['AlarmHeat'] = 156;
             $properties['AlarmHeat'] = $data->commandClasses->{"156"}->data->{"4"}->sensorState->value;
             $updatedList['AlarmHeat'] = $data->commandClasses->{"156"}->data->{"4"}->sensorState->updateTime;
         }
         if (is_object($data->commandClasses->{"156"}->data->{"5"}->sensorState)) {
             $command_classes['AlarmFlood'] = 156;
             $properties['AlarmFlood'] = $data->commandClasses->{"156"}->data->{"5"}->sensorState->value;
             $updatedList['AlarmFlood'] = $data->commandClasses->{"156"}->data->{"5"}->sensorState->updateTime;
         }
         if ($data->commandClasses->{"156"}->data->{"updateTime"} > $updateTime) {
             $updateTime = $data->commandClasses->{"156"}->data->{"updateTime"};
         }
     }
     if ($rec['CLASS_SCENE_CONTROLLER'] && is_object($data->commandClasses->{"43"}->data->{"currentScene"})) {
         // ... 43
         $properties['CurrentScene'] = $data->commandClasses->{"43"}->data->{"currentScene"}->value;
         if ($data->commandClasses->{"43"}->data->{"updateTime"} > $updateTime) {
             $updateTime = $data->commandClasses->{"43"}->data->{"updateTime"};
         }
     } elseif ($rec['CLASS_SCENE_CONTROLLER'] && is_object($data->commandClasses->{"45"}->data->{"currentScene"})) {
         // ... 45
         $properties['CurrentScene'] = $data->commandClasses->{"45"}->data->{"currentScene"}->value;
         if ($data->commandClasses->{"45"}->data->{"updateTime"} > $updateTime) {
             $updateTime = $data->commandClasses->{"43"}->data->{"updateTime"};
         }
     }
     if ($rec['CLASS_THERMOSTAT'] && isset($data->commandClasses->{"64"}->data->mode->value)) {
         //$value=$data->commandClasses->{"64"}->data->{$data->commandClasses->{"64"}->data->mode->value}->modeName->value;
         $rec['SENSOR_VALUE'] .= " Mode: " . $data->commandClasses->{"64"}->data->{$data->commandClasses->{"64"}->data->mode->value}->modeName->value . ';';
         $value = $data->commandClasses->{"64"}->data->mode->value;
         if ($value != $rec['MODE_VALUE']) {
             $rec['MODE_VALUE'] = $value;
             $rec_updated = 1;
         }
         $command_classes['Thermostat mode'] = 64;
         $properties['Thermostat mode'] = $rec['MODE_VALUE'];
         $updatedList['Thermostat mode'] = $data->commandClasses->{"64"}->data->{"updateTime"};
         if ($data->commandClasses->{"64"}->data->{"updateTime"} > $updateTime) {
             $updateTime = $data->commandClasses->{"64"}->data->{"updateTime"};
         }
         $comments_str = '';
         for ($i = 0; $i < 255; $i++) {
             if ($data->commandClasses->{"64"}->data->{$i}) {
                 $comments_str .= "{$i} = " . $data->commandClasses->{"64"}->data->{$i}->modeName->value . "; ";
             }
         }
         $comments['Thermostat mode'] = $comments_str;
         if (isset($data->commandClasses->{"67"}->data)) {
             //ThermostatSetPoint
             for ($i = 0; $i < 255; $i++) {
                 if ($data->commandClasses->{"67"}->data->{$i}->val) {
                     $key = 'ThermostatSetPoint ' . $data->commandClasses->{"67"}->data->{$i}->modeName->value;
                     $properties[$key] = $data->commandClasses->{"67"}->data->{$i}->val->value;
                     $command_classes[$key] = 67;
                     if ($data->commandClasses->{"67"}->data->{$i}->scaleString->value) {
                         $comments[$key] = $data->commandClasses->{"67"}->data->{$i}->scaleString->value;
                     }
                 }
             }
         }
         if (isset($data->commandClasses->{"68"}->data->mode->value)) {
             //ThermostatFanMode
             $properties['ThermostatFanOn'] = (int) $data->commandClasses->{"68"}->data->on->value;
             $command_classes['ThermostatFanMode'] = 68;
             $properties['ThermostatFanMode'] = $data->commandClasses->{"68"}->data->mode->value;
             if ($data->commandClasses->{"68"}->data->{"updateTime"} > $updateTime) {
                 $updateTime = $data->commandClasses->{"68"}->data->{"updateTime"};
             }
             $rec['SENSOR_VALUE'] .= " Fan Mode: " . $data->commandClasses->{"68"}->data->{$data->commandClasses->{"68"}->data->mode->value}->modeName->value . ';';
             $comments_str = '';
             for ($i = 0; $i < 255; $i++) {
                 if ($data->commandClasses->{"68"}->data->{$i}) {
                     $comments_str .= "{$i} = " . $data->commandClasses->{"68"}->data->{$i}->modeName->value . "; ";
                 }
             }
             $comments['ThermostatFanMode'] = $comments_str;
         }
     }
     if ($updateTime) {
         $properties['updateTime'] = $updateTime;
         $rec['LATEST_UPDATE'] = date('Y-m-d H:i:s', $properties['updateTime']);
         $rec_updated = 1;
     }
     if ($rec_updated) {
         SQLUpdate('zwave_devices', $rec);
     }
     foreach ($properties as $k => $v) {
         $prop = SQLSelectOne("SELECT * FROM zwave_properties WHERE DEVICE_ID='" . $rec['ID'] . "' AND UNIQ_ID LIKE '" . DBSafe($k) . "'");
         $prop['DEVICE_ID'] = $rec['ID'];
         $prop['UNIQ_ID'] = $k;
         $prop['TITLE'] = $k;
         $prop['COMMAND_CLASS'] = $command_classes[$k];
         if ($prop['VALUE'] != $v) {
             $prop['UPDATED'] = date('Y-m-d H:i:s');
         }
         if ($updatedList[$k]) {
             $prop['UPDATED'] = date('Y-m-d H:i:s', $updatedList[$k]);
         }
         $prop['VALUE'] = $v;
         if ($comments[$k]) {
             $prop['COMMENTS'] = $comments[$k];
         }
         if (is_numeric($prop['VALUE']) && $prop['VALUE'] !== '') {
             $prop['VALUE'] = round($prop['VALUE'], 3);
         }
         if ($prop['ID']) {
             SQLUpdate('zwave_properties', $prop);
             if ($prop['VALUE'] !== '') {
                 $validated = 1;
             } else {
                 $validated = 0;
                 continue;
             }
             if ($prop['LINKED_OBJECT']) {
                 if ($prop['CORRECT_VALUE']) {
                     $prop['VALUE'] += (double) $prop['CORRECT_VALUE'];
                 }
             }
             if ($prop['VALIDATE']) {
                 if ((double) $prop['VALUE'] < (double) $prop['VALID_FROM'] || (double) $prop['VALUE'] > (double) $prop['VALID_TO']) {
                     $validated = 0;
                 }
             }
             if ($prop['LINKED_OBJECT'] && $prop['LINKED_PROPERTY'] && $validated) {
                 $old_value = getGlobal($prop['LINKED_OBJECT'] . '.' . $prop['LINKED_PROPERTY']);
                 if ($prop['VALUE'] != $old_value) {
                     setGlobal($prop['LINKED_OBJECT'] . '.' . $prop['LINKED_PROPERTY'], $prop['VALUE'], array($this->name => '0'));
                 }
             }
             if ($prop['LINKED_OBJECT'] && $prop['LINKED_METHOD'] && $validated && ($prop['VALUE'] != $old_value || !$prop['LINKED_PROPERTY'])) {
                 $params = array();
                 $params['VALUE'] = $prop['VALUE'];
                 callMethod($prop['LINKED_OBJECT'] . '.' . $prop['LINKED_METHOD'], $params);
             }
         } else {
             $prop['ID'] = SQLInsert('zwave_properties', $prop);
         }
     }
     //print_r($data);exit;
 }
 function processSubscription($event, $details = '')
 {
     //to-do
     if ($event == 'SAY') {
         $level = $details['level'];
         $message = $details['message'];
         $current_queue = getGlobal('IRCBot1.pushMessage');
         $queue = explode("\n", $current_queue);
         $queue[] = $message;
         if (count($queue) >= 25) {
             $queue = array_slice($queue, -25);
         }
         setGlobal('IRCBot1.pushMessage', implode("\n", $queue));
     }
 }
Example #14
0
 function run()
 {
     global $session;
     Define('ALTERNATIVE_TEMPLATES', 'templates_alt');
     if ($this->action == 'ajaxgetglobal') {
         header("HTTP/1.0: 200 OK\n");
         header('Content-Type: text/html; charset=utf-8');
         $res['DATA'] = getGlobal($_GET['var']);
         echo json_encode($res);
         global $db;
         $db->Disconnect();
         exit;
     }
     if ($this->action == 'ajaxsetglobal') {
         header("HTTP/1.0: 200 OK\n");
         header('Content-Type: text/html; charset=utf-8');
         setGlobal($_GET['var'], $_GET['value']);
         $res['DATA'] = 'OK';
         echo json_encode($res);
         global $db;
         $db->Disconnect();
         exit;
     }
     if ($this->action == 'getlatestnote') {
         header("HTTP/1.0: 200 OK\n");
         header('Content-Type: text/html; charset=utf-8');
         $msg = SQLSelectOne("SELECT * FROM shouts WHERE MEMBER_ID=0 ORDER BY ID DESC LIMIT 1");
         $res = array();
         $res['DATA'] = $msg['MESSAGE'];
         echo json_encode($res);
         global $db;
         $db->Disconnect();
         exit;
     }
     if ($this->action == 'getlatestmp3') {
         header("HTTP/1.0: 200 OK\n");
         header('Content-Type: text/html; charset=utf-8');
         if ($dir = @opendir(ROOT . "cached/voice")) {
             while (($file = readdir($dir)) !== false) {
                 if (preg_match('/\\.mp3$/', $file)) {
                     $mtime = filemtime(ROOT . "cached/voice" . $file);
                     if (time() - $mtime > 60 * 60 * 24 && $mtime > 0) {
                         //old file, delete?
                         unlink(ROOT . "cached/voice" . $file);
                     } else {
                         $files[] = array('FILENAME' => $file, 'MTIME' => filemtime(ROOT . "cached/voice" . $file));
                     }
                 }
                 if (preg_match('/\\.wav$/', $file)) {
                     $mtime = filemtime(ROOT . "cached/voice" . $file);
                     if (time() - $mtime > 60 * 60 * 24 && $mtime > 0) {
                         //old file, delete?
                         unlink(ROOT . "cached/voice" . $file);
                     }
                 }
             }
             closedir($dir);
         }
         if (is_array($files)) {
             function sortFiles($a, $b)
             {
                 if ($a['MTIME'] == $b['MTIME']) {
                     return 0;
                 }
                 return $a['MTIME'] > $b['MTIME'] ? -1 : 1;
             }
             usort($files, 'sortFiles');
             echo '/cached/voice/' . $files[0]['FILENAME'];
         }
         global $db;
         $db->Disconnect();
         exit;
     }
     if (!defined('SETTINGS_SITE_LANGUAGE') || !defined('SETTINGS_SITE_TIMEZONE') || !defined('SETTINGS_TTS_GOOGLE') || !defined('SETTINGS_GROWL_ENABLE') || !defined('SETTINGS_HOOK_BEFORE_SAY')) {
         $this->action = 'first_start';
     }
     if ($this->action == 'first_start') {
         include DIR_MODULES . 'first_start.php';
     }
     $out["ACTION"] = $this->action;
     $out["TODAY"] = date('l, F d, Y');
     $out["DOC_NAME"] = $this->doc_name;
     global $username;
     if ($username) {
         $user = SQLSelectOne("SELECT * FROM users WHERE USERNAME LIKE '" . DBSafe($username) . "'");
         if (!$user['PASSWORD']) {
             $session->data['SITE_USERNAME'] = $user['USERNAME'];
             $session->data['SITE_USER_ID'] = $user['ID'];
         } else {
             if (!isset($_SERVER['PHP_AUTH_USER'])) {
                 header('WWW-Authenticate: Basic realm="MajorDoMo"');
                 header('HTTP/1.0 401 Unauthorized');
                 echo 'Password required!';
                 exit;
             } else {
                 if ($_SERVER['PHP_AUTH_USER'] == $user['USERNAME'] && $_SERVER['PHP_AUTH_PW'] == $user['PASSWORD']) {
                     $session->data['SITE_USERNAME'] = $user['USERNAME'];
                     $session->data['SITE_USER_ID'] = $user['ID'];
                 } else {
                     header('WWW-Authenticate: Basic realm="MajorDoMo"');
                     header('HTTP/1.0 401 Unauthorized');
                     echo 'Incorrect username/password!';
                     exit;
                 }
             }
         }
     }
     global $terminal;
     if ($terminal) {
         $session->data['TERMINAL'] = $terminal;
     }
     if (preg_match('/^app_\\w+$/is', $this->action) || $this->action == 'xray') {
         $out['APP_ACTION'] = 1;
     }
     if ($this->app_action) {
         $out['APP_ACTION'] = 1;
     }
     $terminals = SQLSelect("SELECT * FROM terminals ORDER BY TITLE");
     $total = count($terminals);
     for ($i = 0; $i < $total; $i++) {
         //!$session->data['TERMINAL'] &&
         if ($terminals[$i]['HOST'] != '' && $_SERVER['REMOTE_ADDR'] == $terminals[$i]['HOST']) {
             $session->data['TERMINAL'] = $terminals[$i]['NAME'];
         }
         if ($terminals[$i]['NAME'] == $session->data['TERMINAL']) {
             $terminals[$i]['SELECTED'] = 1;
             $out['TERMINAL_TITLE'] = $terminals[$i]['TITLE'];
         }
     }
     $out['TERMINALS'] = $terminals;
     if ($total == 1) {
         $out['HIDE_TERMINALS'] = 1;
         $session->data['TERMINAL'] = $terminals[0]['NAME'];
     }
     $users = SQLSelect("SELECT * FROM users ORDER BY NAME");
     $total = count($users);
     for ($i = 0; $i < $total; $i++) {
         if ($users[$i]['USERNAME'] == $session->data['SITE_USERNAME']) {
             $users[$i]['SELECTED'] = 1;
             $out['USER_TITLE'] = $users[$i]['NAME'];
             $out['USER_AVATAR'] = $users[$i]['AVATAR'];
         } elseif (!$session->data['SITE_USERNAME'] && $users[$i]['HOST'] && $users[$i]['HOST'] == $_SERVER['REMOTE_ADDR']) {
             $session->data['SITE_USERNAME'] = $users[$i]['USERNAME'];
             $session->data['SITE_USER_ID'] = $users[$i]['ID'];
             $out['USER_TITLE'] = $users[$i]['NAME'];
             $out['USER_AVATAR'] = $users[$i]['AVATAR'];
         }
         if ($users[$i]['IS_DEFAULT'] == 1) {
             $out['DEFAULT_USERNAME'] = $users[$i]['USERNAME'];
             $out['DEFAULT_USER_ID'] = $users[$i]['ID'];
         }
     }
     $out['USERS'] = $users;
     if ($total == 1) {
         $out['HIDE_USERS'] = 1;
         $session->data['SITE_USERNAME'] = $users[0]['USERNAME'];
         $session->data['SITE_USER_ID'] = $users[0]['ID'];
     }
     if (!$session->data['SITE_USERNAME'] && $out['DEFAULT_USERNAME']) {
         $session->data['SITE_USERNAME'] = $out['DEFAULT_USERNAME'];
         $session->data['SITE_USER_ID'] = $out['DEFAULT_USER_ID'];
         for ($i = 0; $i < $total; $i++) {
             if ($users[$i]['USERNAME'] == $session->data['USERNAME']) {
                 $users[$i]['SELECTED'] = 1;
                 $out['USER_TITLE'] = $users[$i]['NAME'];
                 $out['USER_AVATAR'] = $users[$i]['AVATAR'];
             }
         }
     }
     if ($out['USER_TITLE']) {
         Define('USER_TITLE', $out['USER_TITLE']);
         Define('USER_AVATAR', $out['USER_AVATAR']);
     } else {
         Define('USER_TITLE', '');
         Define('USER_AVATAR', '');
     }
     if ($out["DOC_NAME"]) {
         $doc = SQLSelectOne("SELECT ID FROM cms_docs WHERE NAME LIKE '" . DBSafe($out['DOC_NAME']) . "'");
         if ($doc['ID']) {
             $this->doc = $doc['ID'];
         }
     }
     if ($session->data["AUTHORIZED"]) {
         $out['AUTHORIZED_ADMIN'] = 1;
     }
     if ($this->action == '') {
         $res = SQLSelect("SELECT * FROM layouts ORDER BY PRIORITY DESC, TITLE");
         if ($this->action != 'admin') {
             $total = count($res);
             $res2 = array();
             for ($i = 0; $i < $total; $i++) {
                 if (checkAccess('layout', $res[$i]['ID'])) {
                     $res2[] = $res[$i];
                 }
             }
             $res = $res2;
             unset($res2);
         }
         $out['LAYOUTS'] = $res;
         $total = count($out['LAYOUTS']);
         for ($i = 0; $i < $total; $i++) {
             $out['LAYOUTS'][$i]['NUM'] = $i;
         }
         $out['TOTAL_LAYOUTS'] = count($out['LAYOUTS']);
     }
     if ($this->doc) {
         $this->doc_id = $this->doc;
     }
     $out["DOC_ID"] = $this->doc_id;
     if ($session->data['MY_MEMBER']) {
         $out['MY_MEMBER'] = $session->data['MY_MEMBER'];
         $tmp = SQLSelectOne("SELECT ID FROM users WHERE ID='" . (int) $out['MY_MEMBER'] . "' AND ACTIVE_CONTEXT_ID!=0 AND TIMESTAMPDIFF(SECOND, ACTIVE_CONTEXT_UPDATED, NOW())>600");
         if ($tmp['ID']) {
             SQLExec("UPDAE users SET ACTIVE_CONTEXT_ID=0, ACTIVE_CONTEXT_EXTERNAL=0 WHERE ID='" . $tmp['ID'] . "'");
         }
     }
     $out['AJAX'] = $this->ajax;
     $out['POPUP'] = $this->popup;
     $days = array('Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота');
     $out['TODAY'] = $days[date('w')] . ', ' . date('d.m.Y');
     Define(TODAY, $out['TODAY']);
     global $ajt;
     if ($ajt == '') {
         $template_file = DIR_TEMPLATES . $this->name . ".html";
     } else {
         $template_file = ROOT . 'templates_ajax/' . $this->name . "_" . $ajt . ".html";
     }
     if ($this->action == 'menu') {
         $template_file = DIR_TEMPLATES . "menu.html";
     }
     $this->data = $out;
     $p = new parser($template_file, $this->data, $this);
     return $p->result;
 }
Example #15
0
include_once "./load_settings.php";
include_once DIR_MODULES . "control_modules/control_modules.class.php";
$ctl = new control_modules();
include_once DIR_MODULES . 'app_asterisk/app_asterisk.class.php';
$asterisk = new app_asterisk();
$asterisk->getConfig();
$parent_class_rec = SQLSelectOne("SELECT * FROM classes WHERE TITLE LIKE 'Telephony'");
if ($parent_class_rec['ID']) {
    $class_rec = SQLSelectOne("SELECT * FROM classes WHERE TITLE LIKE 'AsteriskAMI' AND PARENT_ID = '" . $parent_class_rec['ID'] . "'");
    if ($class_rec['ID']) {
        $obj_rec = SQLSelectOne("SELECT * FROM objects WHERE CLASS_ID='" . $class_rec['ID'] . "'");
        if ($obj_rec['ID']) {
            $amihost = getGlobal($obj_rec['TITLE'] . '.amihost');
            $amiport = getGlobal($obj_rec['TITLE'] . '.amiport');
            $amiusername = getGlobal($obj_rec['TITLE'] . '.amiusername');
            $amipassword = getGlobal($obj_rec['TITLE'] . '.amipassword');
        }
    }
}
if (!$amihost) {
    echo date('Y-m-d H:i:s') . " : AMI is not configured. No need to run cycle\n";
    exit;
}
echo date("Y-m-d H:i:s") . " running " . basename(__FILE__) . PHP_EOL;
include './lib/phpagi/phpagi-asmanager.php';
$manager = new AGI_AsteriskManager();
echo date('Y-m-d H:i:s') . " : Connecting to AMI... ";
if (!$manager->connect($amihost . ":" . $amiport, $amiusername, $amipassword)) {
    echo " ...Connection failed.\n";
    exit;
} else {
     } else {
         $target = "../../logos/" . $logo;
         @unlink($target);
     }
     if (!move_uploaded_file($_FILES['logo']['tmp_name'], $target)) {
         $logo = null;
     }
 } else {
     $logo = $local->logo;
 }
 //Cargando Photo
 if (!empty($_FILES["photo"]["name"])) {
     $photo_ext = pathinfo($_FILES["photo"]["name"], PATHINFO_EXTENSION);
     $photo = $local->photo;
     if ($photo == null) {
         $cantidad_photos = getGlobal("cantidad_photos");
         $cantidad_photos = intval($cantidad_photos[0]->valor);
         $photo = "photo_" . ($cantidad_photos + 1) . "." . $photo_ext;
         $target = "../../photos/" . $photo;
         updateGlobal("cantidad_photos", $cantidad_photos + 1);
     } else {
         $target = "../../photos/" . $photo;
         @unlink($target);
     }
     if (!move_uploaded_file($_FILES['photo']['tmp_name'], $target)) {
         $photo = null;
     }
 } else {
     $photo = $local->photo;
 }
 $usuario = $_SESSION["userid"];
 /**
 * Receive req
 *
 * @access public
 */
 function req($arr)
 {
     // Node
     $NId = $arr[0];
     $SId = $arr[1];
     $mType = 1;
     // $arr[2];
     $SubType = $arr[4];
     if ($NId == "") {
         return;
     }
     $node = SQLSelectOne("SELECT * FROM msnodes WHERE NID LIKE '" . DBSafe($NId) . "';");
     if (!$node['ID']) {
         $node['NID'] = $NId;
         $node['TITLE'] = $NId;
         $node['ID'] = SQLInsert('msnodes', $node);
     }
     // Sensor
     $sens = SQLSelectOne("SELECT * FROM msnodeval WHERE NID LIKE '" . DBSafe($NId) . "' AND SID LIKE '" . DBSafe($SId) . "' AND SUBTYPE LIKE '" . DBSafe($SubType) . "';");
     if (!$sens['ID']) {
         $sens['NID'] = $NId;
         $sens['SID'] = $SId;
         $sens['SUBTYPE'] = $SubType;
         $sens['ID'] = SQLInsert('msnodeval', $sens);
     }
     // Req
     $val = $sens['VAL'];
     if ($sens['LINKED_OBJECT'] && $sens['LINKED_PROPERTY']) {
         $val = getGlobal($sens['LINKED_OBJECT'] . '.' . $sens['LINKED_PROPERTY']);
         //echo "Get from: ".$sens['LINKED_OBJECT'].".".$sens['LINKED_PROPERTY']." = ".$val."\n";
     }
     //echo "Set: ".$val."\n";
     $this->cmd("{$NId};{$SId};{$mType};" . $sens['ACK'] . ";{$SubType};" . $val);
     return false;
 }
Example #18
0
/**
* Title
*
* Description
*
* @access public
*/
function say($ph, $level = 0)
{
    global $commandLine;
    global $voicemode;
    /*
    if ($commandLine) {
     echo utf2win($ph);
    } else {
     echo $ph;
    }
    */
    $rec = array();
    $rec['MESSAGE'] = $ph;
    $rec['ADDED'] = date('Y-m-d H:i:s');
    $rec['ROOM_ID'] = 0;
    $rec['MEMBER_ID'] = 0;
    if ($level > 0) {
        $rec['IMPORTANCE'] = $level;
    }
    $rec['ID'] = SQLInsert('shouts', $rec);
    if (defined('SETTINGS_HOOK_BEFORE_SAY') && SETTINGS_HOOK_BEFORE_SAY != '') {
        eval(SETTINGS_HOOK_BEFORE_SAY);
    }
    if ($level >= (int) getGlobal('minMsgLevel')) {
        //$voicemode!='off' &&
        $lang = 'en';
        if (defined('SETTINGS_SITE_LANGUAGE')) {
            $lang = SETTINGS_SITE_LANGUAGE;
        }
        if (defined('SETTINGS_VOICE_LANGUAGE')) {
            $lang = SETTINGS_VOICE_LANGUAGE;
        }
        if (!defined('SETTINGS_TTS_GOOGLE') || SETTINGS_TTS_GOOGLE) {
            $google_file = GoogleTTS($ph, $lang);
        } else {
            $google_file = false;
        }
        if (!defined('SETTINGS_SPEAK_SIGNAL') || SETTINGS_SPEAK_SIGNAL == '1') {
            $passed = SQLSelectOne("SELECT (UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(ADDED)) as PASSED FROM shouts WHERE ID!='" . $rec['ID'] . "' ORDER BY ID DESC LIMIT 1");
            if ($passed['PASSED'] > 20) {
                // play intro-sound only if more than 30 seconds passed from the last one
                playSound('dingdong', 1, $level);
            }
        }
        if ($google_file) {
            @touch($google_file);
            playSound($google_file, 1, $level);
        } else {
            safe_exec('cscript ' . DOC_ROOT . '/rc/sapi.js ' . $ph, 1, $level);
        }
    }
    global $noPatternMode;
    if (!$noPatternMode) {
        include_once DIR_MODULES . 'patterns/patterns.class.php';
        $pt = new patterns();
        $pt->checkAllPatterns();
    }
    if (defined('SETTINGS_HOOK_AFTER_SAY') && SETTINGS_HOOK_AFTER_SAY != '') {
        eval(SETTINGS_HOOK_AFTER_SAY);
    }
    if (defined('SETTINGS_PUSHOVER_USER_KEY') && SETTINGS_PUSHOVER_USER_KEY) {
        include_once ROOT . 'lib/pushover/pushover.inc.php';
        if (defined('SETTINGS_PUSHOVER_LEVEL')) {
            if ($level >= SETTINGS_PUSHOVER_LEVEL) {
                postToPushover($ph);
            }
        } elseif ($level > 0) {
            postToPushover($ph);
        }
    }
    if (defined('SETTINGS_GROWL_ENABLE') && SETTINGS_GROWL_ENABLE && $level >= SETTINGS_GROWL_LEVEL) {
        include_once ROOT . 'lib/growl/growl.gntp.php';
        $growl = new Growl(SETTINGS_GROWL_HOST, SETTINGS_GROWL_PASSWORD);
        $growl->setApplication('MajorDoMo', 'Notifications');
        //$growl->registerApplication('http://localhost/img/logo.png');
        $growl->notify($ph);
    }
    postToTwitter($ph);
}
Example #19
0
function gg($varname)
{
    return getGlobal($varname, $value);
}
Example #20
0
}
?>
            height                       : '<?php 
echo getGlobal('EDHEIGHT');
?>
',
            baseHref                     : '<?php 
echo getGlobal('SITEURL');
?>
'
            <?php 
if (getGlobal('EDTOOL')) {
    echo ",toolbar: " . returnJsArray(getGlobal('EDTOOL'));
}
if (getGlobal('EDOPTIONS')) {
    echo ',' . trim(getGlobal('EDOPTIONS'));
}
?>
        };

        // wipe the ckeditor shim, so it does not interfere with the real one
        if(typeof CKEDITOR !== 'undefined'){
            if(CKEDITOR.SHIM == true) CKEDITOR = null;
        }

       <?php 
if (get_filename_id() == 'snippets') {
    echo "htmlEditorConfig.height = '130px';";
}
?>
Example #21
0
 /**
 * Title
 *
 * Description
 *
 * @access public
 */
 function checkPattern($id, $from_user_id = 0)
 {
     global $session;
     global $pattern_matched;
     $this_pattern_matched = 0;
     $condition_matched = 0;
     $rec = SQLSelectOne("SELECT * FROM patterns WHERE ID='" . (int) $id . "'");
     if ($rec['PATTERN_TYPE'] == 1) {
         //conditional pattern
         $value = getGlobal($rec['LINKED_OBJECT'] . '.' . $rec['LINKED_PROPERTY']);
         $condition_value = $rec['CONDITION_VALUE'];
         if (($rec['CONDITION'] == 2 || $rec['CONDITION'] == 3) && $condition_value != '' && !is_numeric($condition_value) && !preg_match('/^%/', $condition_value)) {
             $condition_value = '%' . $condition_value . '%';
         }
         if (is_integer(strpos($condition_value, "%"))) {
             $condition_value = processTitle($condition_value);
         }
         if ($rec['CONDITION'] == 1 && $value == $condition_value) {
             $status = 1;
         } elseif ($rec['CONDITION'] == 2 && (double) $value >= (double) $condition_value) {
             $status = 1;
         } elseif ($rec['CONDITION'] == 3 && (double) $value < (double) $condition_value) {
             $status = 1;
         } elseif ($rec['CONDITION'] == 4 && $value != $condition_value) {
             $status = 1;
         } else {
             $status = 0;
         }
         if ($status == 1 && !$rec['ACTIVE_STATE']) {
             $rec['ACTIVE_STATE'] = 1;
             SQLUpdate('patterns', $rec);
             $condition_matched = 1;
         } elseif ($status == 0 && $rec['ACTIVE_STATE']) {
             $rec['ACTIVE_STATE'] = 0;
             SQLUpdate('patterns', $rec);
             if ($rec['SCRIPT_EXIT']) {
                 $this->runPatternExitAction($rec['ID'], $rec['SCRIPT_EXIT']);
             }
             //to-do: state exit script
         }
     } else {
         if ($rec['SKIPSYSTEM'] && !$from_user_id) {
             return 0;
         }
         if (!$rec['PATTERN']) {
             $pattern = $rec['TITLE'];
         } else {
             $pattern = $rec['PATTERN'];
         }
         $pattern = str_replace("\r", '', $pattern);
         if ($pattern == '') {
             return 0;
         }
         if ($rec['EXECUTED'] > 0 && $rec['TIME_LIMIT'] && time() - $rec['EXECUTED'] <= $rec['TIME_LIMIT']) {
             return 0;
         }
         $lines_pattern = explode("\n", $pattern);
         $total_lines = count($lines_pattern);
         if (!$rec['TIME_LIMIT']) {
             $messages = SQLSelect("SELECT MESSAGE FROM shouts ORDER BY ID DESC LIMIT " . (int) $total_lines);
             $messages = array_reverse($messages);
         } else {
             $start_from = time() - $rec['TIME_LIMIT'];
             $messages = SQLSelect("SELECT MESSAGE FROM shouts WHERE ADDED>=('" . date('Y-m-d H:i:s', $start_from) . "') ORDER BY ADDED");
         }
         $total = count($messages);
         if (!$total) {
             return 0;
         }
         $lines = array();
         for ($i = 0; $i < $total; $i++) {
             $lines[] = $messages[$i]['MESSAGE'];
         }
         $history = implode('@@@@', $lines);
         $check = implode('@@@@', $lines_pattern);
         if (preg_match('/' . $check . '/isu', $history, $matches)) {
             $condition_matched = 1;
         }
     }
     if ($condition_matched) {
         if (checkAccess('pattern', $rec['ID'])) {
             $is_common = 0;
             if ($rec['PARENT_ID']) {
                 $parent_rec = SQLSelectOne("SELECT IS_COMMON_CONTEXT FROM patterns WHERE ID='" . $rec['PARENT_ID'] . "'");
                 $is_common = (int) $parent_rec['IS_COMMON_CONTEXT'];
             }
             if (context_getcurrent()) {
                 $history = context_get_history() . ' ' . $history;
             }
             if ($rec['IS_CONTEXT']) {
                 context_activate($rec['ID'], 1, $history);
             } elseif ($rec['MATCHED_CONTEXT_ID']) {
                 context_activate($rec['MATCHED_CONTEXT_ID'], 0, $history);
             } elseif (!$is_common) {
                 context_activate(0);
             }
             $rec['LOG'] = date('Y-m-d H:i:s') . ' Pattern matched' . "\n" . $rec['LOG'];
             $rec['EXECUTED'] = time();
             SQLUpdate('patterns', $rec);
             $pattern_matched = 1;
             $this_pattern_matched = 1;
             $sub_patterns_matched = 0;
             if ($rec['IS_CONTEXT']) {
                 $sub_patterns = SQLSelect("SELECT ID, IS_LAST FROM patterns WHERE PARENT_ID='" . $rec['ID'] . "' ORDER BY PRIORITY DESC, TITLE");
                 $total = count($sub_patterns);
                 for ($i = 0; $i < $total; $i++) {
                     if ($this->checkPattern($sub_patterns[$i]['ID'], $from_user_id)) {
                         $sub_patterns_matched = 1;
                         if ($sub_patterns[$i]['IS_LAST']) {
                             break;
                         }
                     }
                 }
             }
             if (!$sub_patterns_matched) {
                 $this->runPatternAction($rec['ID'], $matches, $history, $from_user_id);
             }
             if ($rec['ONETIME']) {
                 SQLExec("DELETE FROM patterns WHERE ID='" . $rec['ID'] . "'");
             }
         }
     } else {
         $this_pattern_matched = 0;
     }
     return $this_pattern_matched;
 }
Example #22
0
 /**
 * FrontEnd
 *
 * Module frontend
 *
 * @access public
 */
 function usual(&$out)
 {
     /*
     $this->getConfig();
     if ($this->config['ENABLED'] && $_SERVER['REQUEST_URI']=='/') {
      echo "<html><head><title>".SETTINGS_SITE_TITLE."</title><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/><link href=\"/stl.css\" rel=\"stylesheet\" type=\"text/css\"/></head><body>".$this->config['CONTENT']."</body></html>";
      exit;
     }
     */
     global $play;
     global $rnd;
     global $rnd;
     global $session;
     global $play_terminal;
     global $terminal_id;
     if ($this->play) {
         $play = $this->play;
     }
     if ($this->terminal_id) {
         $terminal_id = $this->terminal_id;
     }
     if ($terminal_id) {
         $terminal = SQLSelectOne("SELECT * FROM terminals WHERE ID='" . (int) $terminal_id . "'");
         $session->data['PLAY_TERMINAL'] = $terminal['NAME'];
     }
     if ($session->data['PLAY_TERMINAL'] == '') {
         $session->data['PLAY_TERMINAL'] = $session->data['TERMINAL'];
     }
     if ($play_terminal != '') {
         $session->data['PLAY_TERMINAL'] = $play_terminal;
     }
     if ($session->data['PLAY_TERMINAL'] != '') {
         $terminal = SQLSelectOne("SELECT * FROM terminals WHERE NAME='" . DBSafe($session->data['PLAY_TERMINAL']) . "'");
     }
     if (!$terminal['HOST']) {
         $terminal['HOST'] = 'localhost';
     }
     if (!$play && $session->data['LAST_PLAY']) {
         $play = $session->data['LAST_PLAY'];
     } elseif ($play) {
         $session->data['LAST_PLAY'] = $play;
     }
     if ($play != '') {
         $out['PLAY'] = $play;
     }
     if ($rnd != '') {
         $out['RND'] = $rnd;
     }
     $current_level = getGlobal('ThisComputer.volumeLevel');
     for ($i = 0; $i <= 100; $i += 5) {
         $rec = array('VALUE' => $i);
         if ($i == $current_level) {
             $rec['SELECTED'] = 1;
         }
         $out['VOLUMES'][] = $rec;
     }
     global $ajax;
     if ($ajax != '') {
         global $command;
         if ($command != '') {
             if (!$this->intCall) {
                 echo $command . ' ';
             }
             $ch = curl_init();
             curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
             if ($terminal['PLAYER_USERNAME'] || $terminal['PLAYER_PASSWORD']) {
                 curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
                 curl_setopt($ch, CURLOPT_USERPWD, $terminal['PLAYER_USERNAME'] . ':' . $terminal['PLAYER_PASSWORD']);
             }
             if (!$terminal['PLAYER_PORT'] && $terminal['PLAYER_TYPE'] == 'foobar') {
                 $terminal['PLAYER_PORT'] = '8888';
             } elseif (!$terminal['PLAYER_PORT'] && $terminal['PLAYER_TYPE'] == 'xbmc') {
                 $terminal['PLAYER_PORT'] = '8080';
             } elseif (!$terminal['PLAYER_PORT']) {
                 $terminal['PLAYER_PORT'] = '80';
             }
             if ($terminal['PLAYER_TYPE'] == 'vlc' || $terminal['PLAYER_TYPE'] == '') {
                 $terminal['PLAYER_PORT'] = '80';
                 if ($command == 'refresh') {
                     $out['PLAY'] = preg_replace('/\\\\$/is', '', $out['PLAY']);
                     $out['PLAY'] = preg_replace('/\\/$/is', '', $out['PLAY']);
                     if (preg_match('/^http/', $out['PLAY'])) {
                         $path = urlencode($out['PLAY']);
                     } else {
                         $path = urlencode('' . str_replace('/', "\\", $out['PLAY']));
                     }
                     curl_setopt($ch, CURLOPT_URL, "http://" . $terminal['HOST'] . ":" . $terminal['PLAYER_PORT'] . "/rc/?command=vlc_play&param=" . $path);
                     //echo $path;exit;
                     $res = curl_exec($ch);
                 }
                 if ($command == 'fullscreen') {
                     curl_setopt($ch, CURLOPT_URL, "http://" . $terminal['HOST'] . ":" . $terminal['PLAYER_PORT'] . "/rc/?command=vlc_fullscreen");
                     $res = curl_exec($ch);
                 }
                 if ($command == 'pause') {
                     curl_setopt($ch, CURLOPT_URL, "http://" . $terminal['HOST'] . ":" . $terminal['PLAYER_PORT'] . "/rc/?command=vlc_pause");
                     $res = curl_exec($ch);
                 }
                 if ($command == 'next') {
                     curl_setopt($ch, CURLOPT_URL, "http://" . $terminal['HOST'] . ":" . $terminal['PLAYER_PORT'] . "/rc/?command=vlc_next");
                     $res = curl_exec($ch);
                 }
                 if ($command == 'prev') {
                     curl_setopt($ch, CURLOPT_URL, "http://" . $terminal['HOST'] . ":" . $terminal['PLAYER_PORT'] . "/rc/?command=vlc_prev");
                     $res = curl_exec($ch);
                 }
                 if ($command == 'close') {
                     curl_setopt($ch, CURLOPT_URL, "http://" . $terminal['HOST'] . ":" . $terminal['PLAYER_PORT'] . "/rc/?command=vlc_close");
                     $res = curl_exec($ch);
                 }
                 if ($command == 'volume') {
                     global $volume;
                     setGlobal('ThisComputer.volumeLevel', $volume);
                     callMethod('ThisComputer.VolumeLevelChanged', array('VALUE' => $volume, 'HOST' => $terminal['HOST']));
                 }
             } elseif ($terminal['PLAYER_TYPE'] == 'xbmc') {
                 include DIR_MODULES . 'app_player/xbmc.php';
             } elseif ($terminal['PLAYER_TYPE'] == 'foobar') {
                 include DIR_MODULES . 'app_player/foobar.php';
             } elseif ($terminal['PLAYER_TYPE'] == 'vlcweb') {
                 include DIR_MODULES . 'app_player/vlcweb.php';
             } elseif ($terminal['PLAYER_TYPE'] == 'mpd') {
                 include DIR_MODULES . 'app_player/mpd.php';
             }
             // close cURL resource, and free up system resources
             curl_close($ch);
         }
         if (!$this->intCall) {
             if ($session->data['PLAY_TERMINAL'] != '') {
                 echo " on " . $session->data['PLAY_TERMINAL'] . ' ';
             }
             echo "OK";
             if ($res) {
                 echo " (" . $res . ")";
             }
             $session->save();
             exit;
         }
     }
     $terminals = SQLSelect("SELECT * FROM terminals WHERE CANPLAY=1 ORDER BY TITLE");
     $total = count($terminals);
     for ($i = 0; $i < $total; $i++) {
         if ($terminals[$i]['NAME'] == $session->data['PLAY_TERMINAL']) {
             $terminals[$i]['SELECTED'] = 1;
             $out['TERMINAL_TITLE'] = $terminals[$i]['TITLE'];
         }
     }
     $out['TERMINALS_TOTAL'] = count($terminals);
     if ($out['TERMINALS_TOTAL'] == 1 || !$session->data['PLAY_TERMINAL']) {
         $terminals[0]['SELECTED'] = 1;
     }
     $out['TERMINALS'] = $terminals;
 }
Example #23
0
 /**
 * FrontEnd
 *
 * Module frontend
 *
 * @access public
 */
 function usual(&$out)
 {
     if ($this->class) {
         $objects = getObjectsByClass($this->class);
         if (!$this->code) {
             $template = '#title# <i>#description#</i><br/>';
         } else {
             $template = $this->code;
         }
         $result = '';
         if ($objects[0]['ID']) {
             $total = count($objects);
             for ($i = 0; $i < $total; $i++) {
                 $objects[$i] = SQLSelectOne("SELECT * FROM objects WHERE ID='" . $objects[$i]['ID'] . "'");
                 $line = $template;
                 $line = preg_replace('/\\#title\\#/is', $objects[$i]['TITLE'], $line);
                 $line = preg_replace('/\\#description\\#/is', $objects[$i]['DESCRIPTION'], $line);
                 if (preg_match_all('/\\#([\\w\\d_-]+?)\\#/is', $line, $m)) {
                     $totalm = count($m[0]);
                     for ($im = 0; $im < $totalm; $im++) {
                         $property = trim($objects[$i]['TITLE'] . '.' . $m[1][$im]);
                         $line = str_replace($m[0][$im], getGlobal($property), $line);
                     }
                 }
                 $result .= $line;
             }
         }
         $out['RESULT'] = $result;
     }
 }
 private function _actionPostProperty($data)
 {
     $this->cycleAlive();
     if (isset($data['NAME'])) {
         $property_name = mb_strtolower($data['NAME'], 'UTF-8');
         if (defined('DEBUG_WEBSOCKETS') && DEBUG_WEBSOCKETS == 1) {
             echo date('Y-m-d H:i:s') . " Update property " . $property_name . "\n";
         }
         //$this->_cachedProperties[$property_name]=$data['VALUE'];
         //process property update
         global $scenes;
         global $commands;
         foreach ($this->_clients as $client) {
             if (isset($client->watchedProperties[$property_name])) {
                 //scenes
                 if (isset($client->watchedProperties[$property_name]['states'])) {
                     $send_states = array();
                     $seen_state = array();
                     foreach ($client->watchedProperties[$property_name]['states'] as $k => $v) {
                         if (isset($seen_state[$k])) {
                             continue;
                         }
                         $seen_state[$k] = 1;
                         $state = $this->_scenesDynamicElements[$k];
                         $scenes->processState($state);
                         $send_states[] = $state;
                     }
                     if (isset($send_states[0])) {
                         if (defined('DEBUG_WEBSOCKETS') && DEBUG_WEBSOCKETS == 1) {
                             echo date('Y-m-d H:i:s') . (" Sending updated state " . serialize($send_states) . "\n");
                         }
                         $encodedData = $this->_encodeData('states', json_encode($send_states));
                         $client->send($encodedData);
                     }
                 }
                 //commands (menu)
                 if (isset($client->watchedProperties[$property_name]['commands'])) {
                     $send_values = array();
                     $send_labels = array();
                     $seen_commands = array();
                     foreach ($client->watchedProperties[$property_name]['commands'] as $k => $v) {
                         if (isset($seen_commands[$k])) {
                             continue;
                         }
                         $seen_commands[$k] = 1;
                         $item = $commands->processMenuItem($k, true, $data['VALUE']);
                         if (isset($item['VALUE'])) {
                             $send_values[] = array('ID' => $item['ID'], 'DATA' => $item['VALUE']);
                         }
                         if (isset($item['LABEL'])) {
                             $send_labels[] = array('ID' => $item['ID'], 'DATA' => $item['LABEL']);
                         }
                     }
                     if (isset($send_labels[0])) {
                         $send_data = array('LABELS' => $send_labels, 'VALUES' => $send_values);
                         if (defined('DEBUG_WEBSOCKETS') && DEBUG_WEBSOCKETS == 1) {
                             echo date('Y-m-d H:i:s') . (" Sending updated menu items " . serialize($send_data) . "\n");
                         }
                         $encodedData = $this->_encodeData('commands', json_encode($send_data));
                         $client->send($encodedData);
                     }
                 }
                 //properties
                 if (isset($client->watchedProperties[$property_name]['properties'])) {
                     $send_data = array();
                     $send_data[] = array('PROPERTY' => $property_name, 'VALUE' => getGlobal($property_name));
                     if (isset($send_data[0])) {
                         if (defined('DEBUG_WEBSOCKETS') && DEBUG_WEBSOCKETS == 1) {
                             echo date('Y-m-d H:i:s') . (" Sending updated properties " . serialize($send_data) . "\n");
                         }
                         $encodedData = $this->_encodeData('properties', json_encode($send_data));
                         $client->send($encodedData);
                     }
                 }
             }
         }
     }
     if (file_exists('./reboot')) {
         $db->Disconnect();
         exit;
     }
 }
Example #25
0
        }
    }
}
// END: begincut endcut placecut
// BEGIN: filter output
if ($filterblock != '') {
    preg_match('/<!-- begin_data \\[' . $filterblock . '\\] -->(.*?)<!-- end_data \\[' . $filterblock . '\\] -->/is', $result, $match);
    $result = $match[1];
}
// END: filter output
// GLOBALS
$result = preg_replace('/%rand%/is', rand(), $result);
if (preg_match_all('/%(\\w{2,}?)\\.(\\w{2,}?)%/is', $result, $m)) {
    $total = count($m[0]);
    for ($i = 0; $i < $total; $i++) {
        $result = str_replace($m[0][$i], getGlobal($m[1][$i] . '.' . $m[2][$i]), $result);
    }
}
if (preg_match_all('/%(\\w{2,}?)\\.(\\w{2,}?)\\|(\\d+)%/is', $result, $m)) {
    $total = count($m[0]);
    $seen = array();
    for ($i = 0; $i < $total; $i++) {
        $var = $m[1][$i] . '.' . $m[2][$i];
        $interval = (int) $m[2][$i] * 1000;
        if (!$interval) {
            $interval = 10000;
        }
        $id = 'var_' . preg_replace('/\\W/', '_', $var) . $seen[$var];
        $seen[$var]++;
        $result = str_replace($m[0][$i], '<span id="' . $id . '">...</span><script language="javascript">ajaxGetGlobal("' . $var . '", "' . $id . '", ' . $interval . ');</script>', $result);
    }
Example #26
0
<?php

$root = $GLOBALS['root'];
$footLines = getGlobal('footLines');
$posts = Blog::findAll("ORDER BY datetime DESC LIMIT 5");
?>
	</section>
</div>

<footer>
	<div class='container'>
		<div class='row'>
			<div class='col-sm-4 col-xs-12'>
				<h2>Recent Articles</h2>
				<ul>
					<?php 
if (count($posts)) {
    foreach ($posts as $post) {
        $title = $post->title;
        $year = getDateElements("%Y", $post->datetime);
        $link = $root . DS . 'blog' . DS . $year . DS . snakeString($title);
        ?>
							<li><a href='<?php 
        echo $link . DS;
        ?>
'><?php 
        echo $title;
        ?>
</a></li>
						<?php 
    }
Example #27
0
/**
 * get the global siteurl
 * @since 3.4
 * @param  $absolute force absolute url
 * @return str
 */
function getSiteURL($absolute = false)
{
    return $absolute ? getGlobal('SITEURL_ABS') : getGlobal('SITEURL');
}
Example #28
0
 /**
  * Returns the track's complete file path (with $media_dir)
  * 
  * The paramater is one of: user|host|general
  *
  * @author Ben Dodson
  * @version 6/7/04
  * @since 6/7/04
  */
 function getFileName($target = "user")
 {
     global $media_dirs, $web_dirs, $web_root, $root_dir, $protocols, $jzUSER, $allow_resample, $force_resample, $no_resample_subnets, $always_resample;
     if (checkPermission($jzUSER, 'play', $this->getPath("String")) === false) {
         return false;
     }
     if ($this->playpath === false || $this->playpath == "") {
         $cache = $this->readCache();
         if ($cache[0] == "-") {
             // return error?
             $this->playpath = $this->getPath("String");
         } else {
             $this->playpath = $cache[0];
         }
     }
     if (isset($protocols) && isset($this->playpath)) {
         $parr = explode("|", $protocols);
         foreach ($parr as $p) {
             if (stristr($this->playpath, $p) !== false) {
                 return $this->playpath;
             }
         }
     }
     /**********************/
     if ($target == "user" || $target == "general") {
         if ($target == "user" && ($local_root = $jzUSER->getSetting("localpath")) !== false) {
             if (stristr($media_dirs, "|") === false) {
                 $tmp = $this->getFileName("host");
                 if (stristr($tmp, $media_dirs) !== false) {
                     return str_replace("//", "/", str_replace($media_dirs, $local_root, $tmp));
                 }
             }
         }
         $meta = $this->getMeta();
         $arr = array();
         //$arr['Artist'] = $meta['artist']; // decoy
         //$arr['Track'] = $meta['title']; // decoy
         // Resample?
         if (($allow_resample == "true" || $force_resample == "true") && !preg_match("/^{$no_resample_subnets}\$/", $_SERVER['REMOTE_ADDR'])) {
             if ($jzUSER->getSetting('resample_lock')) {
                 $arr["resample"] = $jzUSER->getSetting('resample_rate');
             } else {
                 if (isset($_SESSION['jz_resample_rate'])) {
                     if ($_SESSION['jz_resample_rate'] != "") {
                         // Ok already, we are resampling!!!
                         $arr["resample"] = $_SESSION['jz_resample_rate'];
                     }
                 } else {
                     if ($jzUSER->getSetting('stream') === false && $jzUSER->getSetting('lofi') === true || $force_resample == "true") {
                         $arr["resample"] = $jzUSER->getSetting('resample_rate');
                     }
                 }
             }
         }
         $arr['jz_user'] = $jzUSER->getID();
         // user id
         $arr['sid'] = $_SESSION['sid'];
         // unique session id
         if (getGlobal("CLIP_MODE")) {
             $arr['cl'] = 't';
         }
         // Now, if they are resampling we MUST end with an MP3
         $arr['ext'] = $meta['type'];
         if (isset($_SESSION['jz_resample_rate'])) {
             if ($_SESSION['jz_resample_rate'] != "") {
                 $arr['ext'] = "mp3";
             }
         }
         // Now we need to see if this track is a type that always gets resampled
         if ($allow_resample == "true") {
             // Now do we have a type that is going to get resampled
             if (stristr($always_resample, $meta['type'])) {
                 // Ok, let's set it to MP3
                 $arr['ext'] = "mp3";
             }
         }
         // Now should we send a path or ID?
         if ($web_dirs != "") {
             return jzCreateLink($this->getFileName("host"), "track", $arr);
         } else {
             return jzCreateLink($this->getID(), "track", $arr);
         }
     } else {
         return $this->playpath;
     }
 }
Example #29
0
 function processMenuElements(&$res)
 {
     startMeasure('processMenuElements');
     startMeasure('processMenuElements ' . $_SERVER['REQUEST_URI']);
     if ($this->action != 'admin') {
         $total = count($res);
         $res2 = array();
         for ($i = 0; $i < $total; $i++) {
             if (checkAccess('menu', $res[$i]['ID'])) {
                 $res2[] = $res[$i];
             }
         }
         $res = $res2;
         unset($res2);
     }
     $total = count($res);
     for ($i = 0; $i < $total; $i++) {
         // some action for every record if required
         if ($res[$i + 1]['INLINE']) {
             $res[$i]['INLINE'] = 1;
         }
         $item = $res[$i];
         if ($item['VISIBLE_DELAY']) {
             $out['VISIBLE_DELAYS']++;
         }
         if ($item['EXT_ID'] && $this->action != 'admin') {
             $visible_delay = $item['VISIBLE_DELAY'];
             $tmp = SQLSelectOne("SELECT * FROM commands WHERE ID='" . (int) $item['EXT_ID'] . "'");
             if ($tmp['ID']) {
                 $item = $tmp;
                 $item['VISIBLE_DELAY'] = $visible_delay;
                 $res[$i] = $item;
             }
         } elseif ($item['EXT_ID'] && $this->action == 'admin') {
             $tmp = SQLSelectOne("SELECT * FROM commands WHERE ID='" . (int) $item['EXT_ID'] . "'");
             if ($tmp['ID']) {
                 $item['TITLE'] = $item['TITLE'] . ' (' . $tmp['TITLE'] . ')';
                 $res[$i] = $item;
             }
         }
         if ($item['LINKED_PROPERTY'] != '') {
             $lprop = getGlobal($item['LINKED_OBJECT'] . '.' . $item['LINKED_PROPERTY']);
             if ($item['TYPE'] == 'custom') {
                 $field = 'DATA';
             } else {
                 $field = 'CUR_VALUE';
             }
             if ($lprop != $item[$field]) {
                 $item[$field] = $lprop;
                 SQLUpdate('commands', $item);
                 $res[$i] = $item;
             }
         }
         if ($item['TYPE'] == 'timebox') {
             $tmp = explode(':', $item['CUR_VALUE']);
             $value1 = (int) $tmp[0];
             $value2 = (int) $tmp[1];
             for ($h = 0; $h <= 23; $h++) {
                 $v = $h;
                 if ($v < 10) {
                     $v = '0' . $v;
                 }
                 $selected = 0;
                 if ($h == $value1) {
                     $selected = 1;
                 }
                 $item['OPTIONS1'][] = array('VALUE' => $v, 'SELECTED' => $selected);
             }
             for ($h = 0; $h <= 59; $h++) {
                 $v = $h;
                 if ($v < 10) {
                     $v = '0' . $v;
                 }
                 $selected = 0;
                 if ($h == $value2) {
                     $selected = 1;
                 }
                 $item['OPTIONS2'][] = array('VALUE' => $v, 'SELECTED' => $selected);
             }
             $res[$i] = $item;
         }
         if ($item['TYPE'] == 'switch') {
             if (trim($item['DATA'])) {
                 $data = explode("\n", str_replace("\r", "", $item['DATA']));
                 $item['OFF_VALUE'] = trim($data[0]);
                 $item['ON_VALUE'] = trim($data[1]);
             } else {
                 $item['OFF_VALUE'] = 0;
                 $item['ON_VALUE'] = 1;
             }
             $res[$i] = $item;
         }
         if ($item['TYPE'] == 'selectbox' || $item['TYPE'] == 'radiobox') {
             $data = explode("\n", str_replace("\r", "", $item['DATA']));
             $item['OPTIONS'] = array();
             $num = 1;
             foreach ($data as $line) {
                 $line = trim($line);
                 if ($line != '') {
                     $option = array();
                     if (preg_match('/=/', $line)) {
                         $tmp = explode('=', $line);
                     } else {
                         $tmp = explode('|', $line);
                     }
                     $option['VALUE'] = $tmp[0];
                     if ($tmp[1] != '') {
                         $option['TITLE'] = $tmp[1];
                     } else {
                         $option['TITLE'] = $option['VALUE'];
                     }
                     if ($option['VALUE'] == $item['CUR_VALUE']) {
                         $option['SELECTED'] = 1;
                     }
                     $option['NUM'] = $num;
                     $num++;
                     $item['OPTIONS'][] = $option;
                 }
             }
             $res[$i] = $item;
         }
         if ($this->owner->name != 'panel') {
             $res[$i]['TITLE'] = processTitle($res[$i]['TITLE'], $this);
             if ($res[$i]['TYPE'] == 'custom') {
                 $res[$i]['DATA'] = processTitle($res[$i]['DATA'], $this);
             }
             if (preg_match('/#[\\w\\d]{6}/is', $res[$i]['TITLE'], $m)) {
                 $color = $m[0];
                 $res[$i]['TITLE'] = trim(str_replace($m[0], '<style>#item' . $res[$i]['ID'] . ' .ui-btn-active {background-color:' . $color . ';border-color:' . $color . '}</style>', $res[$i]['TITLE']));
             }
             if ($res[$i]['RENDER_TITLE'] != $res[$i]['TITLE'] || $res[$i]['RENDER_DATA'] != $res[$i]['DATA']) {
                 $tmp = SQLSelectOne("SELECT * FROM commands WHERE ID='" . $res[$i]['ID'] . "'");
                 $tmp['RENDER_TITLE'] = $res[$i]['TITLE'];
                 $tmp['RENDER_DATA'] = $res[$i]['DATA'];
                 $tmp['RENDER_UPDATED'] = date('Y-m-d H:i:s');
                 SQLUpdate('commands', $tmp);
             }
         }
         if (preg_match('/<script/is', $res[$i]['DATA']) && $res[$i]['AUTO_UPDATE']) {
             $res[$i]['AUTO_UPDATE'] = 0;
         }
         $res[$i]['TITLE_SAFE'] = htmlspecialchars($res[$i]['TITLE']);
         /*
         foreach($res[$i] as $k=>$v) {
          if (!is_array($res[$i][$k]) && $k!='DATA') {
           $res[$i][$k]=addslashes($v);
          }
         }
         */
         $tmp = SQLSelectOne("SELECT COUNT(*) as TOTAL FROM commands WHERE PARENT_ID='" . $res[$i]['ID'] . "'");
         if ($tmp['TOTAL']) {
             $res[$i]['RESULT_TOTAL'] = $tmp['TOTAL'];
         }
         if ($res[$i]['SUB_PRELOAD'] && $this->action != 'admin') {
             $children = SQLSelect("SELECT * FROM commands WHERE PARENT_ID='" . $res[$i]['ID'] . "' ORDER BY PRIORITY DESC, TITLE");
             if ($children[0]['ID']) {
                 $this->processMenuElements($children);
                 if ($children[0]['ID']) {
                     $res[$i]['RESULT'] = $children;
                 }
             }
         }
     }
     endMeasure('processMenuElements ' . $_SERVER['REQUEST_URI'], 1);
     endMeasure('processMenuElements', 1);
 }
Example #30
0
 /**
  * Title
  *
  * Description
  *
  * @access public
  */
 function processMenuItem($item_id, $set_value = false, $new_value = 0)
 {
     if (preg_match('/(\\d+)\\_(\\d+)/', $item_id, $m)) {
         $dynamic_item = 1;
         $real_part = $m[1];
         $object_part = $m[2];
     } else {
         $dynamic_item = 0;
         $real_part = $item_id;
         $object_part = 0;
     }
     $item = SQLSelectOne("SELECT * FROM commands WHERE ID='" . (int) $real_part . "'");
     if ($object_part) {
         $object_rec = SQLSelectOne("SELECT ID, TITLE FROM objects WHERE ID=" . (int) $object_part);
         $item['DATA'] = str_replace('%' . $item['LINKED_OBJECT'] . '.', '%' . $object_rec['TITLE'] . '.', $item['DATA']);
         $item['TITLE'] = $object_rec['TITLE'];
         $item['LINKED_OBJECT'] = $object_rec['TITLE'];
     }
     if ($item['ID']) {
         $item['ID'] = $item_id;
         if ($object_part) {
             $data = getGlobal($object_rec['TITLE'] . '.' . $item['LINKED_PROPERTY']);
         } else {
             if ($set_value) {
                 $item['CUR_VALUE'] = $new_value;
             }
             $data = $item['CUR_VALUE'];
         }
         $item['VALUE'] = $data;
         if ($item['TYPE'] == 'custom') {
             if (preg_match('/\\[#modul/is', $item['DATA'])) {
                 unset($item['LABEL']);
                 return $item;
             }
             //$item['DATA']=processTitle($item['DATA'], $this);
             $data = $item['DATA'];
         } else {
             //$item['TITLE']=processTitle($item['TITLE'], $this);
             $data = $item['TITLE'];
         }
         $data = processTitle($data, $this);
         if (preg_match('/#[\\w\\d]{6}/is', $data, $m)) {
             $color = $m[0];
             $data = trim(str_replace($m[0], '<style>#item' . $item['ID'] . ' .ui-btn-active {background-color:' . $color . ';border-color:' . $color . '}</style>', $data));
         }
         $item['LABEL'] = $data;
     }
     return $item;
 }