<tr>
   <td class="td_right"><label>user</label></td>
   <td height="20">:</td>
   <td><input name="user" type="text" size="15"></td>
 </tr>
 <tr>
 <tr>
   <td class="td_right"><label>password</label></td>
   <td height="20">:</td>
   <td><input name="password" type="password" size="15"></td>
 </tr>
 <tr>
 <tr>
   <td class="td_right"><label>group</label></td>
   <td height="25">:</td>
   <td><? echo sg('group'); ?></td>
 </tr>
 <tr>
   <td class="td_right"><label>alert</label></td>
   <td height="20">:</td>
   <td><input name="alert" type="checkbox"></td>
 </tr>
 <tr>
   <td class="td_right"><label>name</label></td>
   <td height="20">:</td>
   <td><input id="tc_ip" name="name" type="text" value="" size="15"  readonly></td>
 </tr>
 <tr>
   <td class="td_right"><label>port</label></td>
   <td height="20">:</td>
   <td><input id="tp_ip" name="port" type="text" value="" size="7"  readonly></td>
예제 #2
0
 /**
 * BackEnd
 *
 * Module backend
 *
 * @access public
 */
 function admin(&$out)
 {
     global $ajax;
     if ($ajax) {
         global $op;
         global $item_id;
         if ($op == 'get_details') {
             startMeasure('getDetails');
             global $labels;
             global $values;
             $res = array();
             //echo "Debug labels: $labels \nValues: $values\n";
             $res['LABELS'] = array();
             $labels = explode(',', $labels);
             $total = count($labels);
             $seen = array();
             for ($i = 0; $i < $total; $i++) {
                 $item_id = trim($labels[$i]);
                 if (!$item_id || $seen[$item_id]) {
                     continue;
                 }
                 $seen[$item_id] = 1;
                 $item = SQLSelectOne("SELECT * FROM commands WHERE ID='" . (int) $item_id . "'");
                 if ($item['ID']) {
                     if ($item['TYPE'] == 'custom') {
                         $item['DATA'] = processTitle($item['DATA'], $this);
                         $data = $item['DATA'];
                     } else {
                         $item['TITLE'] = processTitle($item['TITLE'], $this);
                         $data = $item['TITLE'];
                     }
                     if ($item['RENDER_DATA'] != $item['DATA'] || $item['RENDER_TITLE'] != $item['TITLE']) {
                         $tmp = SQLSelectOne("SELECT * FROM commands WHERE ID='" . $item['ID'] . "'");
                         $tmp['RENDER_TITLE'] = $item['TITLE'];
                         $tmp['RENDER_DATA'] = $item['DATA'];
                         $tmp['RENDER_UPDATED'] = date('Y-m-d H:i:s');
                         SQLUpdate('commands', $tmp);
                     }
                     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));
                     }
                     $res['LABELS'][] = array('ID' => $item['ID'], 'DATA' => $data);
                 }
             }
             $res['VALUES'] = array();
             $values = explode(',', $values);
             $total = count($values);
             $seen = array();
             for ($i = 0; $i < $total; $i++) {
                 $item_id = trim($values[$i]);
                 if (!$item_id || $seen[$item_id]) {
                     continue;
                 }
                 $seen[$item_id] = 1;
                 $item = SQLSelectOne("SELECT * FROM commands WHERE ID='" . (int) $item_id . "'");
                 if ($item['ID']) {
                     $data = $item['CUR_VALUE'];
                     $res['VALUES'][] = array('ID' => $item['ID'], 'DATA' => $data);
                 }
             }
             $res['LATEST_REQUEST'] = time();
             echo json_encode($res);
             endMeasure('getDetails');
             exit;
         }
         if ($op == 'get_label') {
             startMeasure('getLabel');
             $item = SQLSelectOne("SELECT * FROM commands WHERE ID='" . (int) $item_id . "'");
             startMeasure('getLabel ' . $item['TITLE'], 1);
             if ($item['ID']) {
                 $res = array();
                 if ($item['TYPE'] == 'custom') {
                     $item['DATA'] = processTitle($item['DATA'], $this);
                     $res['DATA'] = $item['DATA'];
                 } else {
                     $item['TITLE'] = processTitle($item['TITLE'], $this);
                     $res['DATA'] = $item['TITLE'];
                 }
                 if ($item['RENDER_DATA'] != $item['DATA'] || $item['RENDER_TITLE'] != $item['TITLE']) {
                     $tmp = SQLSelectOne("SELECT * FROM commands WHERE ID='" . $item['ID'] . "'");
                     $tmp['RENDER_TITLE'] = $item['TITLE'];
                     $tmp['RENDER_DATA'] = $item['DATA'];
                     $tmp['RENDER_UPDATED'] = date('Y-m-d H:i:s');
                     SQLUpdate('commands', $tmp);
                 }
                 echo json_encode($res);
             }
             endMeasure('getLabel ' . $item['TITLE'], 1);
             endMeasure('getLabel', 1);
             exit;
         }
         if ($op == 'get_value') {
             startMeasure('getValue');
             $item = SQLSelectOne("SELECT * FROM commands WHERE ID='" . (int) $item_id . "'");
             if ($item['ID']) {
                 $res = array();
                 $res['DATA'] = $item['CUR_VALUE'];
                 echo json_encode($res);
             }
             endMeasure('getValue', 1);
             exit;
         }
         if ($op == 'value_changed') {
             global $new_value;
             $item = SQLSelectOne("SELECT * FROM commands WHERE ID='" . (int) $item_id . "'");
             if ($item['ID']) {
                 $old_value = $item['CUR_VALUE'];
                 $item['CUR_VALUE'] = $new_value;
                 SQLUpdate('commands', $item);
                 if ($item['LINKED_PROPERTY'] != '') {
                     //$old_value=gg($item['LINKED_OBJECT'].'.'.$item['LINKED_PROPERTY']);
                     sg($item['LINKED_OBJECT'] . '.' . $item['LINKED_PROPERTY'], $item['CUR_VALUE'], array($this->name => 'ID!=' . $item['ID']));
                 }
                 $params = array('VALUE' => $item['CUR_VALUE'], 'OLD_VALUE' => $old_value);
                 if ($item['ONCHANGE_METHOD'] != '') {
                     if (!$item['LINKED_OBJECT']) {
                         $item['LINKED_OBJECT'] = $item['ONCHANGE_OBJECT'];
                     }
                     getObject($item['LINKED_OBJECT'])->callMethod($item['ONCHANGE_METHOD'], $params);
                     //ONCHANGE_OBJECT
                     //DebMes("calling method ".$item['ONCHANGE_OBJECT'].".".$item['ONCHANGE_METHOD']." with ".$item['CUR_VALUE']);
                 }
                 if ($item['SCRIPT_ID']) {
                     //DebMes('Running on_change script #'.$item['SCRIPT_ID']);
                     runScript($item['SCRIPT_ID'], $params);
                 }
                 if ($item['CODE']) {
                     //DebMes("Running on_change code");
                     try {
                         $code = $item['CODE'];
                         $success = eval($code);
                         if ($success === false) {
                             DebMes("Error menu item code: " . $code);
                             registerError('menu_item', "Error menu item code: " . $code);
                         }
                     } catch (Exception $e) {
                         DebMes('Error: exception ' . get_class($e) . ', ' . $e->getMessage() . '.');
                         registerError('menu_item', get_class($e) . ', ' . $e->getMessage());
                     }
                 }
             }
             echo "OK";
         }
         exit;
     }
     if (isset($this->data_source) && !$_GET['data_source'] && !$_POST['data_source']) {
         $out['SET_DATASOURCE'] = 1;
     }
     if ($this->data_source == 'commands' || $this->data_source == '') {
         if ($this->view_mode == '' || $this->view_mode == 'search_commands') {
             startMeasure('searchCommands');
             $this->search_commands($out);
             endMeasure('searchCommands', 1);
         }
         if ($this->view_mode == 'moveup' && $this->id) {
             $this->reorder_items($this->id, 'up');
             $this->redirect("?");
         }
         if ($this->view_mode == 'movedown' && $this->id) {
             $this->reorder_items($this->id, 'down');
             $this->redirect("?");
         }
         if ($this->view_mode == 'edit_commands') {
             $this->edit_commands($out, $this->id);
         }
         if ($this->view_mode == 'clone_commands') {
             $rec = SQLSelectOne("SELECT * FROM commands WHERE ID='" . $this->id . "'");
             unset($rec['ID']);
             $rec['TITLE'] = $rec['TITLE'] . ' (copy)';
             $rec['ID'] = SQLInsert('commands', $rec);
             $this->redirect("?id=" . $rec['ID'] . "&view_mode=edit_commands");
         }
         if ($this->view_mode == 'delete_commands') {
             $this->delete_commands($this->id);
             $this->redirect("?");
         }
     }
 }
예제 #3
0
function cf_edit_video()
{
    global $PATH_THREAD;
    $id = $_POST['id'];
    $type = $_POST['t'];
    $group = $_POST['g'];
    $user_pass = `cat {$PATH_THREAD}/thread{$id}.conf | grep netcam_userpass | awk -F' ' '{print \$2}'`;
    $u_p = split(':', $user_pass);
    $u = $u_p[0];
    $p = $u_p[1];
    $read_dt = `cat {$PATH_THREAD}/thread{$id}.conf | head -1`;
    $dt_val = split(' ', $read_dt);
    $dt = $dt_val[1];
    $on = `cat {$PATH_THREAD}/thread{$id}.conf | grep "#on_movie_start"`;
    $on = $on == '' ? 'checked' : '';
    if ($type == "dev") {
        $html = '<form id="f_dev_' . $id . '">
          <input type="hidden" name="id" value="' . $id . '">
          <input type="hidden" name="type" value="dev">
          <input type="hidden" name="action" value="edit">
          <input type="hidden" name="g_old" value="' . $group . '">
          <table class="table_0">
            <tr>
              <td class="td_right"><label>device</label></td>
              <td height="20">:</td>
              <td>
                <input id="name_dev_' . $id . '" name="dev_ip" type="text" value="' . $dt . '">
                <b>  ex. </b>
                <font color="red"> /dev/video0</font>
              </td>
            </tr>
            <tr>
              <td class="td_right"><label>group</label></td>
              <td height="25">:</td>
              <td>' . sg("group", $group) . '</td>
            </tr>
            <tr>
              <td class="td_right"><label>alert</label></td>
              <td height="20">:</td>
              <td><input name="alert" type="checkbox" ' . $on . '></td>
            </tr>
            <tr>
              <td class="td_right"><label>name</label></td>
              <td height="20">:</td>
              <td><input  name="name" type="text" value="CAMERA ' . $id . '" size="15" readonly></td>
            </tr>
            <tr>
              <td class="td_right"><label>port</label></td>
              <td height="20">:</td>
              <td><input  name="port" type="text" value="100' . $id . '" size="7" readonly></td>
            </tr>
            <tr>
              <td height="20" colspan="2"></td>
              <td>
                <input type="button" class="button green small" value="Save" onclick="edit_video(\'f_dev_' . $id . '\',\'' . $id . '\')">
                <input type="button" class="button red small" value="Cancel" onclick="$(\'#f_dev_' . $id . '\').remove()">
              </td>
            </tr>
          </table> 
        </form>';
    } else {
        if ($type == "ip") {
            $html = '<form id="f_ip_' . $id . '">
          <input type="hidden" name="id" value="' . $id . '">
          <input type="hidden" name="type" value="ip">
          <input type="hidden" name="action" value="edit">
          <input type="hidden" name="g_old" value="' . $group . '">
          <table class="table_0">
            <tr>
              <td class="td_right_top"><label>url</label></td>
              <td height="20" class="td_top">:</td>
              <td>
                <textarea id="name_ip_' . $id . '" name="dev_ip"rows="2" cols="50">' . $dt . '</textarea>
              </td>
            </tr>
            <tr>
              <td class="td_right"><label>user</label></td>
              <td height="20">:</td>
              <td><input name="user" type="text" value="' . $u . '" size="15"></td>
            </tr>
            <tr>
            <tr>
              <td class="td_right"><label>password</label></td>
              <td height="20">:</td>
              <td><input name="password" type="password" value="' . $p . '" size="15"></td>
            </tr>
            <tr>
            <tr>
              <td class="td_right"><label>group</label></td>
              <td height="25">:</td>
              <td>' . sg("group", $group) . '</td>
            </tr>
            <tr>
              <td class="td_right"><label>alert</label></td>
              <td height="20">:</td>
              <td><input name="alert" type="checkbox" ' . $on . '></td>
            </tr>
            <tr>
              <td class="td_right"><label>name</label></td>
              <td height="20">:</td>
              <td><input  name="name" type="text" value="CAMERA ' . $id . '" size="15"  readonly></td>
            </tr>
            <tr>
              <td class="td_right"><label>port</label></td>
              <td height="20">:</td>
              <td><input  name="port" type="text" value="100' . $id . '" size="7"  readonly></td>
            </tr>
            <tr>
              <td height="20" colspan="2"></td>
              <td>
                <input type="button" class="button green small" value="Save" onclick="edit_video(\'f_ip_' . $id . '\',\'' . $id . '\')">
                <input type="button" class="button red small" value="Cancel" onclick="$(\'#f_ip_' . $id . '\').remove()">
              </td>
            </tr>
          </table> 
        </form>';
        } else {
            exit;
        }
    }
    echo $html;
}
예제 #4
0
 function updateDevice($id)
 {
     if (!defined('ONEWIRE_SERVER')) {
         return 0;
     }
     $rec = SQLSelectOne("SELECT * FROM owdevices WHERE ID='" . $id . "'");
     if (!$rec['ID']) {
         return 0;
     }
     $ow = new OWNet(ONEWIRE_SERVER);
     $device = '/' . $rec['UDID'];
     $rec['CHECK_LATEST'] = date('Y-m-d H:i:s');
     $rec['CHECK_NEXT'] = date('Y-m-d H:i:s', time() + (int) $rec['ONLINE_INTERVAL']);
     $old_status = $rec['STATUS'];
     $tmp = $ow->get($device, OWNET_MSG_DIR, false);
     if (!$tmp) {
         $rec['STATUS'] = 0;
     } else {
         $rec['STATUS'] = 1;
     }
     SQLUpdate('owdevices', $rec);
     if ($rec['STATUS'] != $old_status && ($rec['SCRIPT_ID'] || $rec['CODE'])) {
         $params = array();
         $params['DEVICE'] = $device;
         $params['STATUS'] = $rec['STATUS'];
         $params['STATUS_CHANGED'] = 1;
         if ($rec['SCRIPT_ID']) {
             runScript($rec['SCRIPT_ID'], $params);
         } elseif ($rec['CODE']) {
             try {
                 $code = $rec['CODE'];
                 $success = eval($code);
                 if ($success === false) {
                     DebMes("Error in 1-wire action code: " . $code);
                 }
             } catch (Exception $e) {
                 DebMes('Error: exception ' . get_class($e) . ', ' . $e->getMessage() . '.');
             }
         }
     }
     if (!$rec['STATUS']) {
         return 0;
     }
     $changed_values = array();
     $changed = 0;
     $properties = explode(',', $tmp);
     $totalp = count($properties);
     for ($ip = 0; $ip < $totalp; $ip++) {
         $sysname = str_replace($device . '/', '', $properties[$ip]);
         //echo $properties[$ip]." (".$sysname."): ";
         $prec = SQLSelectOne("SELECT * FROM owproperties WHERE DEVICE_ID='" . $rec['ID'] . "' AND SYSNAME='" . DBSafe($sysname) . "'");
         if (!$prec['ID']) {
             $prec['DEVICE_ID'] = $rec['ID'];
             $prec['SYSNAME'] = $sysname;
             $prec['PATH'] = $properties[$ip];
             $prec['ID'] = SQLInsert('owproperties', $prec);
         }
         $old_value = $prec['VALUE'];
         $value = $ow->get($properties[$ip], OWNET_MSG_READ, false);
         if (is_null($value)) {
             $ow->get("/", OWNET_MSG_DIR, false);
             // hack. for some reason it didn't work correct without it on some devices
             $value = $ow->get($properties[$ip], OWNET_MSG_READ, false);
         }
         if (!is_null($value) && $old_value != $value) {
             // value updated
             $changed = 1;
             $changed_values[$prec['SYSNAME']] = array('OLD_VALUE' => $old_value, 'VALUE' => $prec['VALUE']);
             $prec['VALUE'] = $value;
             $prec['UPDATED'] = date('Y-m-d H:i:s');
             SQLUpdate('owproperties', $prec);
             //$rec['LOG']=date('Y-m-d H:i:s')." ".$prec['SYSNAME'].": ".$prec['VALUE']."\n".$rec['LOG'];
             SQLUpdate('owdevices', $rec);
             if ($prec['LINKED_OBJECT'] && $prec['LINKED_PROPERTY']) {
                 sg($prec['LINKED_OBJECT'] . '.' . $prec['LINKED_PROPERTY'], $prec['VALUE'], array('owproperties' => '0'));
             }
         }
     }
     if ($changed) {
         $params = $changed_values;
         $params['DEVICE'] = $device;
         if ($rec['SCRIPT_ID']) {
             runScript($rec['SCRIPT_ID'], $params);
         } elseif ($rec['CODE']) {
             try {
                 $code = $rec['CODE'];
                 $success = eval($code);
                 if ($success === false) {
                     DebMes("Error in code: " . $code);
                 }
             } catch (Exception $e) {
                 DebMes('Error: exception ' . get_class($e) . ', ' . $e->getMessage() . '.');
             }
         }
     }
 }
    /**
    * Install
    *
    * Module installation routine
    *
    * @access private
    */
    function install()
    {
        subscribeToEvent($this->name, 'HOURLY');
        $className = 'ya_traffic';
        $objectName = array('yt_settings', 'yt_info');
        $objDescription = array('Настройки', 'Информация о пробках');
        /*$updCode = ;*/
        $rec = SQLSelectOne("SELECT ID FROM classes WHERE TITLE LIKE '" . DBSafe($className) . "'");
        if (!$rec['ID']) {
            $rec = array();
            $rec['TITLE'] = $className;
            $rec['DESCRIPTION'] = 'Пробки от Яндекс';
            $rec['ID'] = SQLInsert('classes', $rec);
        }
        for ($i = 0; $i < count($objectName); $i++) {
            $obj_rec = SQLSelectOne("SELECT ID FROM objects WHERE CLASS_ID='" . $rec['ID'] . "' AND TITLE LIKE '" . DBSafe($objectName[$i]) . "'");
            if (!$obj_rec['ID']) {
                $obj_rec = array();
                $obj_rec['CLASS_ID'] = $rec['ID'];
                $obj_rec['TITLE'] = $objectName[$i];
                $obj_rec['DESCRIPTION'] = $objDescription[$i];
                $obj_rec['ID'] = SQLInsert('objects', $obj_rec);
            }
        }
        addClassMethod('ya_traffic', 'update', 'include_once(DIR_MODULES."app_yatraffic/app_yatraffic.class.php");
$app_yatraffic=new app_yatraffic();
$app_yatraffic->get_traffic(gg("yt_settings.reg_id"));');
        $data_file = 'https://export.yandex.ru/bar/reginfo.xml';
        $xml = simplexml_load_file($data_file);
        sg('yt_settings.reg_id', $xml->region['id']);
        parent::install();
    }
예제 #6
0
 /**
 * BackEnd
 *
 * Module backend
 *
 * @access public
 */
 function admin(&$out)
 {
     global $ajax;
     if ($ajax) {
         global $op;
         global $item_id;
         if ($op == 'get_label') {
             startMeasure('getLabel');
             $item = SQLSelectOne("SELECT * FROM commands WHERE ID='" . (int) $item_id . "'");
             startMeasure('getLabel ' . $item['TITLE'], 1);
             if ($item['ID']) {
                 $res = array();
                 if ($item['TYPE'] == 'custom') {
                     $item['DATA'] = processTitle($item['DATA'], $this);
                     $res['DATA'] = $item['DATA'];
                 } else {
                     $item['TITLE'] = processTitle($item['TITLE'], $this);
                     $res['DATA'] = $item['TITLE'];
                 }
                 if ($item['RENDER_DATA'] != $item['DATA'] || $item['RENDER_TITLE'] != $item['TITLE']) {
                     $tmp = SQLSelectOne("SELECT * FROM commands WHERE ID='" . $item['ID'] . "'");
                     $tmp['RENDER_TITLE'] = $item['TITLE'];
                     $tmp['RENDER_DATA'] = $item['DATA'];
                     $tmp['RENDER_UPDATED'] = date('Y-m-d H:i:s');
                     SQLUpdate('commands', $tmp);
                 }
                 echo json_encode($res);
             }
             endMeasure('getLabel ' . $item['TITLE'], 1);
             endMeasure('getLabel', 1);
             exit;
         }
         if ($op == 'get_value') {
             startMeasure('getValue');
             $item = SQLSelectOne("SELECT * FROM commands WHERE ID='" . (int) $item_id . "'");
             if ($item['ID']) {
                 $res = array();
                 $res['DATA'] = $item['CUR_VALUE'];
                 echo json_encode($res);
             }
             endMeasure('getValue', 1);
             exit;
         }
         if ($op == 'value_changed') {
             global $new_value;
             $item = SQLSelectOne("SELECT * FROM commands WHERE ID='" . (int) $item_id . "'");
             if ($item['ID']) {
                 $item['CUR_VALUE'] = $new_value;
                 SQLUpdate('commands', $item);
                 if ($item['LINKED_PROPERTY'] != '') {
                     $old_value = gg($item['LINKED_OBJECT'] . '.' . $item['LINKED_PROPERTY']);
                     sg($item['LINKED_OBJECT'] . '.' . $item['LINKED_PROPERTY'], $item['CUR_VALUE'], array('commands' => 'ID!=' . $item['ID']));
                     //DebMes("setting property ".$item['LINKED_OBJECT'].".".$item['LINKED_PROPERTY']." to ".$item['CUR_VALUE']);
                 }
                 $params = array('VALUE' => $item['CUR_VALUE']);
                 if (isset($old_value)) {
                     $params['OLD_VALUE'] = $old_value;
                 }
                 if ($item['ONCHANGE_METHOD'] != '') {
                     getObject($item['ONCHANGE_OBJECT'])->callMethod($item['ONCHANGE_METHOD'], $params);
                     //DebMes("calling method ".$item['ONCHANGE_OBJECT'].".".$item['ONCHANGE_METHOD']." with ".$item['CUR_VALUE']);
                 }
                 if ($item['SCRIPT_ID']) {
                     //DebMes('Running on_change script #'.$item['SCRIPT_ID']);
                     runScript($item['SCRIPT_ID'], $params);
                 }
                 if ($item['CODE']) {
                     //DebMes("Running on_change code");
                     try {
                         $code = $item['CODE'];
                         $success = eval($code);
                         if ($success === false) {
                             DebMes("Error menu item code: " . $code);
                         }
                     } catch (Exception $e) {
                         DebMes('Error: exception ' . get_class($e) . ', ' . $e->getMessage() . '.');
                     }
                 }
             }
             echo "OK";
         }
         exit;
     }
     if (isset($this->data_source) && !$_GET['data_source'] && !$_POST['data_source']) {
         $out['SET_DATASOURCE'] = 1;
     }
     if ($this->data_source == 'commands' || $this->data_source == '') {
         if ($this->view_mode == '' || $this->view_mode == 'search_commands') {
             startMeasure('searchCommands');
             $this->search_commands($out);
             endMeasure('searchCommands', 1);
         }
         if ($this->view_mode == 'edit_commands') {
             $this->edit_commands($out, $this->id);
         }
         if ($this->view_mode == 'clone_commands') {
             $rec = SQLSelectOne("SELECT * FROM commands WHERE ID='" . $this->id . "'");
             unset($rec['ID']);
             $rec['TITLE'] = $rec['TITLE'] . ' (copy)';
             $rec['ID'] = SQLInsert('commands', $rec);
             $this->redirect("?id=" . $rec['ID'] . "&view_mode=edit_commands");
         }
         if ($this->view_mode == 'delete_commands') {
             $this->delete_commands($this->id);
             $this->redirect("?");
         }
     }
 }
예제 #7
0
/**
* BackEnd
*
* Module backend
*
* @access public
*/
function admin(&$out) {

 global $ajax;
 if ($ajax) {

  global $op;
  global $item_id;


  if ($op=='get_label') {
   $item=SQLSelectOne("SELECT * FROM commands WHERE ID='".(int)$item_id."'");
   if ($item['ID']) {
    if ($item['TYPE']=='custom') {
     echo processTitle($item['DATA'], $this);
    } else {
     echo processTitle($item['TITLE'], $this);
    }
    exit;
   }
  }

  if ($op=='get_value') {
   $item=SQLSelectOne("SELECT * FROM commands WHERE ID='".(int)$item_id."'");
   if ($item['ID']) {
    echo $item['CUR_VALUE'];
    exit;
   }
  }


  if ($op=='value_changed') {
   global $new_value;
   $item=SQLSelectOne("SELECT * FROM commands WHERE ID='".(int)$item_id."'");
   if ($item['ID']) {
    $item['CUR_VALUE']=$new_value;
    SQLUpdate('commands', $item);
    if ($item['LINKED_PROPERTY']!='') {
     $old_value=gg($item['LINKED_OBJECT'].'.'.$item['LINKED_PROPERTY']);
     sg($item['LINKED_OBJECT'].'.'.$item['LINKED_PROPERTY'], $item['CUR_VALUE'], 1);
     //DebMes("setting property ".$item['LINKED_OBJECT'].".".$item['LINKED_PROPERTY']." to ".$item['CUR_VALUE']);
    }

    $params=array('VALUE'=>$item['CUR_VALUE']);
    if (isSet($old_value)) {
     $params['OLD_VALUE']=$old_value;
    }

    if ($item['ONCHANGE_METHOD']!='') {
     getObject($item['ONCHANGE_OBJECT'])->callMethod($item['ONCHANGE_METHOD'], $params);
     //DebMes("calling method ".$item['ONCHANGE_OBJECT'].".".$item['ONCHANGE_METHOD']." with ".$item['CUR_VALUE']);
    }

    if ($item['SCRIPT_ID']) {
     //DebMes('Running on_change script #'.$item['SCRIPT_ID']);
     runScript($item['SCRIPT_ID'], $params);
    }
    if ($item['CODE']) {
     //DebMes("Running on_change code");
     eval($item['CODE']);
    }

   }
   echo "OK";exit;
  }

 }



 if (isset($this->data_source) && !$_GET['data_source'] && !$_POST['data_source']) {
  $out['SET_DATASOURCE']=1;
 }
 if ($this->data_source=='commands' || $this->data_source=='') {
  if ($this->view_mode=='' || $this->view_mode=='search_commands') {
   $this->search_commands($out);
  }
  if ($this->view_mode=='edit_commands') {
   $this->edit_commands($out, $this->id);
  }
  if ($this->view_mode=='delete_commands') {
   $this->delete_commands($this->id);
   $this->redirect("?");
  }
 }
}