/** * Title * * Description * * @access public */ function getObjectsByClass($class_name) { $class_record = SQLSelectOne("SELECT ID FROM classes WHERE TITLE LIKE '" . DBSafe(trim($class_name)) . "'"); if (!$class_record['ID']) { return 0; } $objects = SQLSelect("SELECT ID, TITLE FROM objects WHERE CLASS_ID='" . $class_record['ID'] . "'"); $sub_classes = SQLSelect("SELECT ID, TITLE FROM classes WHERE PARENT_ID='" . $class_record['ID'] . "'"); if ($sub_classes[0]['ID']) { $total = count($sub_classes); for ($i = 0; $i < $total; $i++) { $sub_objects = getObjectsByClass($sub_classes[$i]['TITLE']); if ($sub_objects[0]['ID']) { foreach ($sub_objects as $obj) { $objects[] = $obj; } } } } /* $total=count($objects); for($i=0;$i<$total;$i++) { $objects[$i]=getObject($objects[$i]['TITLE']) } */ return $objects; }
/** * 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); } } }
} } $session->data['commands_sort'] = $sortby; } $sortby = "PRIORITY DESC, TITLE"; $out['SORTBY'] = $sortby; // SEARCH RESULTS $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;
// update if (!$rec['KEEP_HISTORY']) { $pvalues = SQLSelect("SELECT * FROM pvalues WHERE PROPERTY_ID='" . $rec['ID'] . "'"); $total = count($pvalues); for ($i = 0; $i < $total; $i++) { SQLExec("DELETE FROM phistory WHERE VALUE_ID='" . $pvalues[$i]['ID'] . "'"); } } } else { $new_rec = 1; $rec['ID'] = SQLInsert($table_name, $rec); // adding new record } $out['OK'] = 1; if ($rec['CLASS_ID']) { $objects = getObjectsByClass($rec['CLASS_ID']); $total = count($objects); $replaces = array(); for ($i = 0; $i < $total; $i++) { $property = SQLSelectOne("SELECT ID FROM properties WHERE TITLE LIKE '" . DBSafe($rec['TITLE']) . "' AND OBJECT_ID=" . (int) $objects[$i]['ID'] . " AND CLASS_ID!=" . (int) $rec['CLASS_ID']); if ($property['ID']) { $replaces[] = $property['ID']; } } $total = count($replaces); for ($i = 0; $i < $total; $i++) { SQLExec("UPDATE pvalues SET PROPERTY_ID=" . (int) $rec['ID'] . " WHERE PROPERTY_ID=" . (int) $replaces[$i]); SQLExec("DELETE FROM properties WHERE ID=" . (int) $replaces[$i]); } } } else {
/** * 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; } }
/** * Title * * Description * * @access public */ function getDynamicElements($qry = '1') { $elements = SQLSelect("SELECT elements.* FROM elements, scenes WHERE elements.SCENE_ID=scenes.ID AND {$qry} ORDER BY PRIORITY DESC, TITLE"); $totale = count($elements); $res2 = array(); for ($ie = 0; $ie < $totale; $ie++) { $states = SQLSelect("SELECT elm_states.*,elements.TYPE FROM elm_states, elements WHERE elm_states.ELEMENT_ID=elements.ID AND ELEMENT_ID='" . $elements[$ie]['ID'] . "' ORDER BY elm_states.PRIORITY DESC, elm_states.TITLE"); if ($elements[$ie]['SMART_REPEAT'] && !$this->action == 'admin') { $linked_object = ''; if ($states[0]['LINKED_OBJECT']) { $linked_object = $states[0]['LINKED_OBJECT']; } elseif ($states[0]['ACTION_OBJECT']) { $linked_object = $states[0]['ACTION_OBJECT']; } if ($linked_object) { $obj = getObject($linked_object); $objects = getObjectsByClass($obj->class_id); $total_o = count($objects); for ($io = 0; $io < $total_o; $io++) { $rec = $elements[$ie]; $rec['ID'] = $elements[$ie] . '_' . $objects[$io]['ID']; $new_states = array(); $total_s = count($states); for ($is = 0; $is < $total_s; $is++) { $state_rec = $states[$is]; if ($state_rec['LINKED_OBJECT']) { $state_rec['LINKED_OBJECT'] = $objects[$io]['TITLE']; } if ($state_rec['ACTION_OBJECT']) { $state_rec['ACTION_OBJECT'] = $objects[$io]['TITLE']; } if ($state_rec['HTML']) { $state_rec['HTML'] = str_replace('%' . $linked_object . '.', '%' . $objects[$io]['TITLE'] . '.', $state_rec['HTML']); } $state_rec['ID'] = $state_rec['ID'] . '_' . $objects[$io]['ID']; $new_states[] = $state_rec; } $rec['STATES'] = $new_states; $res2[] = $rec; } } else { $elements[$ie]['STATES'] = $states; $elements[$ie]['SMART_REPEAT'] = 0; $res2[] = $elements[$ie]; } } else { $elements[$ie]['STATES'] = $states; $res2[] = $elements[$ie]; } } return $res2; }
function getDynamicElements($qry = 1) { $res = SQLSelect("SELECT * FROM commands WHERE {$qry} ORDER BY PRIORITY DESC, TITLE"); $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; return $res; }
/** * Summary of getObjectsByClass * @param mixed $class_name Class name * @return array|int */ function getObjectsByClass($class_name) { $sqlQuery = "SELECT ID\n FROM classes\n WHERE (TITLE LIKE '" . DBSafe(trim($class_name)) . "'\n OR ID = " . (int) $class_name . "\n )"; $class_record = SQLSelectOne($sqlQuery); if (!$class_record['ID']) { return 0; } $sqlQuery = "SELECT ID, TITLE\n FROM objects\n WHERE CLASS_ID = '" . $class_record['ID'] . "'"; $objects = SQLSelect($sqlQuery); $sqlQuery = "SELECT ID, TITLE\n FROM classes WHERE PARENT_ID = '" . $class_record['ID'] . "'"; $sub_classes = SQLSelect($sqlQuery); if (isset($sub_classes[0]['ID'])) { $total = count($sub_classes); for ($i = 0; $i < $total; $i++) { $sub_objects = getObjectsByClass($sub_classes[$i]['TITLE']); if (isset($sub_objects[0]['ID'])) { foreach ($sub_objects as $obj) { $objects[] = $obj; } } } } /* $total=count($objects); for($i=0;$i<$total;$i++) { $objects[$i]=getObject($objects[$i]['TITLE']) } */ return $objects; }