PageRenderTime 44ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/web/skins/classic/includes/control_functions.php

https://github.com/mastertheknife/ZoneMinder-kfir
PHP | 390 lines | 344 code | 28 blank | 18 comment | 45 complexity | b8f9873fbef1f3ce38fb8309db30f407 MD5 | raw file
Possible License(s): GPL-2.0
  1. <?php
  2. //
  3. // ZoneMinder web control function library, $Date$, $Revision$
  4. // Copyright (C) 2001-2008 Philip Coombes
  5. //
  6. // This program is free software; you can redistribute it and/or
  7. // modify it under the terms of the GNU General Public License
  8. // as published by the Free Software Foundation; either version 2
  9. // of the License, or (at your option) any later version.
  10. //
  11. // This program is distributed in the hope that it will be useful,
  12. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. // GNU General Public License for more details.
  15. //
  16. // You should have received a copy of the GNU General Public License
  17. // along with this program; if not, write to the Free Software
  18. // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  19. //
  20. function getControlCommands( $monitor )
  21. {
  22. $cmds = array();
  23. $cmds['Wake'] = "wake";
  24. $cmds['Sleep'] = "sleep";
  25. $cmds['Reset'] = "reset";
  26. $cmds['PresetSet'] = "presetSet";
  27. $cmds['PresetGoto'] = "presetGoto";
  28. $cmds['PresetHome'] = "presetHome";
  29. if ( !empty($monitor['CanZoom']) )
  30. {
  31. if ( $monitor['CanZoomCon'] )
  32. $cmds['ZoomRoot'] = "zoomCon";
  33. elseif ( $monitor['CanZoomRel'] )
  34. $cmds['ZoomRoot'] = "zoomRel";
  35. elseif ( $monitor['CanZoomAbs'] )
  36. $cmds['ZoomRoot'] = "zoomAbs";
  37. $cmds['ZoomTele'] = $cmds['ZoomRoot']."Tele";
  38. $cmds['ZoomWide'] = $cmds['ZoomRoot']."Wide";
  39. $cmds['ZoomStop'] = "zoomStop";
  40. $cmds['ZoomAuto'] = "zoomAuto";
  41. $cmds['ZoomMan'] = "zoomMan";
  42. }
  43. if ( !empty($monitor['CanFocus']) )
  44. {
  45. if ( $monitor['CanFocusCon'] )
  46. $cmds['FocusRoot'] = "focusCon";
  47. elseif ( $monitor['CanFocusRel'] )
  48. $cmds['FocusRoot'] = "focusRel";
  49. elseif ( $monitor['CanFocusAbs'] )
  50. $cmds['FocusRoot'] = "focusAbs";
  51. $cmds['FocusFar'] = $cmds['FocusRoot']."Far";
  52. $cmds['FocusNear'] = $cmds['FocusRoot']."Near";
  53. $cmds['FocusStop'] = "focusStop";
  54. $cmds['FocusAuto'] = "focusAuto";
  55. $cmds['FocusMan'] = "focusMan";
  56. }
  57. if ( !empty($monitor['CanIris']) )
  58. {
  59. if ( $monitor['CanIrisCon'] )
  60. $cmds['IrisRoot'] = "irisCon";
  61. elseif ( $monitor['CanIrisRel'] )
  62. $cmds['IrisRoot'] = "irisRel";
  63. elseif ( $monitor['CanIrisAbs'] )
  64. $cmds['IrisRoot'] = "irisAbs";
  65. $cmds['IrisOpen'] = $cmds['IrisRoot']."Open";
  66. $cmds['IrisClose'] = $cmds['IrisRoot']."Close";
  67. $cmds['IrisStop'] = "irisStop";
  68. $cmds['IrisAuto'] = "irisAuto";
  69. $cmds['IrisMan'] = "irisMan";
  70. }
  71. if ( !empty($monitor['CanWhite']) )
  72. {
  73. if ( $monitor['CanWhiteCon'] )
  74. $cmds['WhiteRoot'] = "whiteCon";
  75. elseif ( $monitor['CanWhiteRel'] )
  76. $cmds['WhiteRoot'] = "whiteRel";
  77. elseif ( $monitor['CanWhiteAbs'] )
  78. $cmds['WhiteRoot'] = "whiteAbs";
  79. $cmds['WhiteIn'] = $cmds['WhiteRoot']."In";
  80. $cmds['WhiteOut'] = $cmds['WhiteRoot']."Out";
  81. $cmds['WhiteAuto'] = "whiteAuto";
  82. $cmds['WhiteMan'] = "whiteMan";
  83. }
  84. if ( !empty($monitor['CanGain']) )
  85. {
  86. if ( $monitor['CanGainCon'] )
  87. $cmds['GainRoot'] = "gainCon";
  88. elseif ( $monitor['CanGainRel'] )
  89. $cmds['GainRoot'] = "gainRel";
  90. elseif ( $monitor['CanGainAbs'] )
  91. $cmds['GainRoot'] = "gainAbs";
  92. $cmds['GainUp'] = $cmds['GainRoot']."Up";
  93. $cmds['GainDown'] = $cmds['GainRoot']."Down";
  94. $cmds['GainAuto'] = "gainAuto";
  95. $cmds['GainMan'] = "gainMan";
  96. }
  97. if ( !empty($monitor['CanMove']) )
  98. {
  99. if ( $monitor['CanMoveCon'] )
  100. {
  101. $cmds['MoveRoot'] = "moveCon";
  102. $cmds['Center'] = "moveStop";
  103. }
  104. elseif ( $monitor['CanMoveRel'] )
  105. {
  106. $cmds['MoveRoot'] = "moveRel";
  107. $cmds['Center'] = $cmds['PresetHome'];
  108. }
  109. elseif ( $monitor['CanMoveAbs'] )
  110. {
  111. $cmds['MoveRoot'] = "moveAbs";
  112. $cmds['Center'] = $cmds['PresetHome'];
  113. }
  114. $cmds['MoveUp'] = $cmds['MoveRoot']."Up";
  115. $cmds['MoveDown'] = $cmds['MoveRoot']."Down";
  116. $cmds['MoveLeft'] = $cmds['MoveRoot']."Left";
  117. $cmds['MoveRight'] = $cmds['MoveRoot']."Right";
  118. $cmds['MoveUpLeft'] = $cmds['MoveRoot']."UpLeft";
  119. $cmds['MoveUpRight'] = $cmds['MoveRoot']."UpRight";
  120. $cmds['MoveDownLeft'] = $cmds['MoveRoot']."DownLeft";
  121. $cmds['MoveDownRight'] = $cmds['MoveRoot']."DownRight";
  122. }
  123. return( $cmds );
  124. }
  125. function controlFocus( $monitor, $cmds )
  126. {
  127. global $SLANG;
  128. ob_start();
  129. ?>
  130. <div class="arrowControl focusControls">
  131. <div class="arrowLabel"><?= $SLANG['Near'] ?></div>
  132. <div class="longArrowBtn upBtn" onclick="controlCmd('<?= $cmds['FocusNear'] ?>',event,0,-1)"></div>
  133. <div class="arrowCenter"<?php if ( $monitor['CanFocusCon'] ) { ?> onclick="controlCmd('<?= $cmds['FocusStop'] ?>')"<?php } ?>><?= $SLANG['Focus'] ?></div>
  134. <div class="longArrowBtn downBtn" onclick="controlCmd('<?= $cmds['FocusFar'] ?>',event,0,1)"></div>
  135. <div class="arrowLabel"><?= $SLANG['Far'] ?></div>
  136. <?php
  137. if ( $monitor['CanAutoFocus'] )
  138. {
  139. ?>
  140. <input type="button" class="ptzTextBtn" value="<?= $SLANG['Auto'] ?>" onclick="controlCmd('<?= $cmds['FocusAuto'] ?>')"/>
  141. <input type="button" class="ptzTextBtn" value="<?= $SLANG['Man'] ?>" onclick="controlCmd('<?= $cmds['FocusMan'] ?>')"/>
  142. <?php
  143. }
  144. ?>
  145. </div>
  146. <?php
  147. return( ob_get_clean() );
  148. }
  149. function controlZoom( $monitor, $cmds )
  150. {
  151. global $SLANG;
  152. ob_start();
  153. ?>
  154. <div class="arrowControl zoomControls">
  155. <div class="arrowLabel"><?= $SLANG['Tele'] ?></div>
  156. <div class="longArrowBtn upBtn" onclick="controlCmd('<?= $cmds['ZoomTele'] ?>',event,0,-1)"></div>
  157. <div class="arrowCenter"<?php if ( $monitor['CanZoomCon'] ) { ?> onclick="controlCmd('<?= $cmds['ZoomStop'] ?>')"<?php } ?>><?= $SLANG['Zoom'] ?></div>
  158. <div class="longArrowBtn downBtn" onclick="controlCmd('<?= $cmds['ZoomWide'] ?>',event,0,1)"></div>
  159. <div class="arrowLabel"><?= $SLANG['Wide'] ?></div>
  160. <?php
  161. if ( $monitor['CanAutoZoom'] )
  162. {
  163. ?>
  164. <input type="button" class="ptzTextBtn" value="<?= $SLANG['Auto'] ?>" onclick="controlCmd('<?= $cmds['ZoomAuto'] ?>')"/>
  165. <input type="button" class="ptzTextBtn" value="<?= $SLANG['Man'] ?>" onclick="controlCmd('<?= $cmds['ZoomMan'] ?>')"/>
  166. <?php
  167. }
  168. ?>
  169. </div><?php
  170. return( ob_get_clean() );
  171. }
  172. function controlIris( $monitor, $cmds )
  173. {
  174. global $SLANG;
  175. ob_start();
  176. ?>
  177. <div class="arrowControl irisControls">
  178. <div class="arrowLabel"><?= $SLANG['Open'] ?></div>
  179. <div class="longArrowBtn upBtn" onclick="controlCmd('<?= $cmds['IrisOpen'] ?>',event,0,-1)"></div>
  180. <div class="arrowCenter"<?php if ( $monitor['CanIrisCon'] ) { ?> onclick="controlCmd('<?= $cmds['IrisStop'] ?>')"<?php } ?>><?= $SLANG['Iris'] ?></div>
  181. <div class="longArrowBtn downBtn" onclick="controlCmd('<?= $cmds['IrisClose'] ?>',event,0,1)"></div>
  182. <div class="arrowLabel"><?= $SLANG['Close'] ?></div>
  183. <?php
  184. if ( $monitor['CanAutoIris'] )
  185. {
  186. ?>
  187. <input type="button" class="ptzTextBtn" value="<?= $SLANG['Auto'] ?>" onclick="controlCmd('<?= $cmds['IrisAuto'] ?>')"/>
  188. <input type="button" class="ptzTextBtn" value="<?= $SLANG['Man'] ?>" onclick="controlCmd('<?= $cmds['IrisMan'] ?>')"/>
  189. <?php
  190. }
  191. ?>
  192. </div>
  193. <?php
  194. return( ob_get_clean() );
  195. }
  196. function controlWhite( $monitor, $cmds )
  197. {
  198. global $SLANG;
  199. ob_start();
  200. ?>
  201. <div class="arrowControl whiteControls">
  202. <div class="arrowLabel"><?= $SLANG['In'] ?></div>
  203. <div class="longArrowBtn upBtn" onclick="controlCmd('<?= $cmds['WhiteIn'] ?>',event,0,-1)"></div>
  204. <div class="arrowCenter"<?php if ( $monitor['CanWhiteCon'] ) { ?> onclick="controlCmd('<?= $cmds['WhiteStop'] ?>')"<?php } ?>><?= $SLANG['White'] ?></div>
  205. <div class="longArrowBtn downBtn" onclick="controlCmd('<?= $cmds['WhiteOut'] ?>',event,0,1)"></div>
  206. <div class="arrowLabel"><?= $SLANG['Out'] ?></div>
  207. <?php
  208. if ( $monitor['CanAutoWhite'] )
  209. {
  210. ?>
  211. <input type="button" class="ptzTextBtn" value="<?= $SLANG['Auto'] ?>" onclick="controlCmd('<?= $cmds['WhiteAuto'] ?>')"/>
  212. <input type="button" class="ptzTextBtn" value="<?= $SLANG['Man'] ?>" onclick="controlCmd('<?= $cmds['WhiteMan'] ?>')"/>
  213. <?php
  214. }
  215. ?>
  216. </div>
  217. <?php
  218. return( ob_get_clean() );
  219. }
  220. function controlPanTilt( $monitor, $cmds )
  221. {
  222. global $SLANG;
  223. ob_start();
  224. ?>
  225. <div class="pantiltControls">
  226. <div class="pantilLabel"><?= $SLANG['PanTilt'] ?></div>
  227. <div class="pantiltButtons">
  228. <?php
  229. $hasPan = $monitor['CanPan'];
  230. $hasTilt = $monitor['CanTilt'];
  231. $hasDiag = $hasPan && $hasTilt && $monitor['CanMoveDiag'];
  232. ?>
  233. <div class="arrowBtn upLeftBtn<?= $hasDiag?'':' invisible' ?>" onclick="controlCmd('<?= $cmds['MoveUpLeft'] ?>',event,-1,-1)"></div>
  234. <div class="arrowBtn upBtn<?= $hasTilt?'':' invisible' ?>" onclick="controlCmd('<?= $cmds['MoveUp'] ?>',event,0,-1)"></div>
  235. <div class="arrowBtn upRightBtn<?= $hasDiag?'':' invisible' ?>" onclick="controlCmd('<?= $cmds['MoveUpRight'] ?>',event,1,-1)"></div>
  236. <div class="arrowBtn leftBtn<?= $hasPan?'':' invisible' ?>" onclick="controlCmd('<?= $cmds['MoveLeft'] ?>',event,1,0)"></div>
  237. <div class="arrowBtn centerBtn" onclick="controlCmd('<?= $cmds['Center'] ?>')"></div>
  238. <div class="arrowBtn rightBtn<?= $hasPan?'':' invisible' ?>" onclick="controlCmd('<?= $cmds['MoveRight'] ?>',event,1,0)"></div>
  239. <div class="arrowBtn downLeftBtn<?= $hasDiag?'':' invisible' ?>" onclick="controlCmd('<?= $cmds['MoveDownLeft'] ?>',event,-1,1)"></div>
  240. <div class="arrowBtn downBtn<?= $hasTilt?'':' invisible' ?>" onclick="controlCmd('<?= $cmds['MoveDown'] ?>',event,0,1)"></div>
  241. <div class="arrowBtn downRightBtn<?= $hasDiag?'':' invisible' ?>" onclick="controlCmd('<?= $cmds['MoveDownRight'] ?>',event,1,1)"></div>
  242. </div>
  243. </div>
  244. <?php
  245. return( ob_get_clean() );
  246. }
  247. function controlPresets( $monitor, $cmds )
  248. {
  249. global $SLANG;
  250. define( "MAX_PRESETS", "12" );
  251. $sql = "select * from ControlPresets where MonitorId = '".$monitor['Id']."'";
  252. $labels = array();
  253. foreach( dbFetchAll( $sql ) as $row )
  254. {
  255. $labels[$row['Preset']] = $row['Label'];
  256. }
  257. $presetBreak = (int)(($monitor['NumPresets']+1)/((int)(($monitor['NumPresets']-1)/MAX_PRESETS)+1));
  258. ob_start();
  259. ?>
  260. <div class="presetControls">
  261. <!--<div><?= $SLANG['Presets'] ?></div>-->
  262. <div>
  263. <?php
  264. for ( $i = 1; $i <= $monitor['NumPresets']; $i++ )
  265. {
  266. ?><input type="button" class="ptzNumBtn" title="<?= isset($labels[$i])?$labels[$i]:"" ?>" value="<?= $i ?>" onclick="controlCmd('<?= $cmds['PresetGoto'] ?><?= $i ?>');"/><?php
  267. if ( $i && (($i%$presetBreak) == 0) )
  268. {
  269. ?><br/><?php
  270. }
  271. }
  272. ?>
  273. </div>
  274. <div>
  275. <?php
  276. if ( $monitor['HasHomePreset'] )
  277. {
  278. ?>
  279. <input type="button" class="ptzTextBtn" value="<?= $SLANG['Home'] ?>" onclick="controlCmd('<?= $cmds['PresetHome'] ?>');"/>
  280. <?php
  281. }
  282. if ( canEdit( 'Monitors') && $monitor['CanSetPresets'] )
  283. {
  284. ?>
  285. <input type="button" class="ptzTextBtn" value="<?= $SLANG['Set'] ?>" onclick="createPopup( '?view=controlpreset&amp;mid=<?= $monitor['Id'] ?>', 'zmPreset', 'preset' );"/>
  286. <?php
  287. }
  288. ?>
  289. </div>
  290. </div>
  291. <?php
  292. return( ob_get_clean() );
  293. }
  294. function controlPower( $monitor, $cmds )
  295. {
  296. global $SLANG;
  297. ob_start();
  298. ?>
  299. <div class="powerControls">
  300. <div class="powerLabel"><?= $SLANG['Control'] ?></div>
  301. <div>
  302. <?php
  303. if ( $monitor['CanWake'] )
  304. {
  305. ?>
  306. <input type="button" class="ptzTextBtn" value="<?= $SLANG['Wake'] ?>" onclick="controlCmd('<?= $cmds['Wake'] ?>')"/>
  307. <?php
  308. }
  309. if ( $monitor['CanSleep'] )
  310. {
  311. ?>
  312. <input type="button" class="ptzTextBtn" value="<?= $SLANG['Sleep'] ?>" onclick="controlCmd('<?= $cmds['Sleep'] ?>')"/>
  313. <?php
  314. }
  315. if ( $monitor['CanReset'] )
  316. {
  317. ?>
  318. <input type="button" class="ptzTextBtn" value="<?= $SLANG['Reset'] ?>" onclick="controlCmd('<?= $cmds['Reset'] ?>')"/>
  319. <?php
  320. }
  321. ?>
  322. </div>
  323. </div>
  324. <?php
  325. return( ob_get_clean() );
  326. }
  327. function ptzControls( $monitor )
  328. {
  329. $cmds = getControlCommands( $monitor );
  330. ob_start();
  331. ?>
  332. <div class="controlsPanel">
  333. <?php
  334. if ( $monitor['CanFocus'] )
  335. echo controlFocus( $monitor, $cmds );
  336. if ( $monitor['CanZoom'] )
  337. echo controlZoom( $monitor, $cmds );
  338. if ( $monitor['CanIris'] )
  339. echo controlIris( $monitor, $cmds );
  340. if ( $monitor['CanWhite'] )
  341. echo controlWhite( $monitor, $cmds );
  342. if ( $monitor['CanMove'] || ( $monitor['CanWake'] || $monitor['CanSleep'] || $monitor['CanReset'] ) )
  343. {
  344. ?>
  345. <div class="pantiltPanel">
  346. <?php
  347. if ( $monitor['CanMove'] )
  348. echo controlPanTilt( $monitor, $cmds );
  349. if ( $monitor['CanWake'] || $monitor['CanSleep'] || $monitor['CanReset'] )
  350. echo controlPower( $monitor, $cmds );
  351. ?>
  352. </div>
  353. <?php
  354. }
  355. ?>
  356. </div>
  357. <?php
  358. if ( $monitor['HasPresets'] )
  359. echo controlPresets( $monitor, $cmds );
  360. return( ob_get_clean() );
  361. }
  362. ?>