view.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297
  1. <?php
  2. require_once 'includes/common.inc.php';
  3. $page['css'][] = 'frame';
  4. $page['js'][] = 'frame';
  5. require 'includes/header.inc.php';
  6. if (!isset($_GET['key'])) {
  7. ?>
  8. Invalid key
  9. <?php
  10. require 'includes/footer.inc.php';
  11. die;
  12. }
  13. $type = $redis->type($_GET['key']);
  14. $exists = $redis->exists($_GET['key']);
  15. $count_elements_page = isset($config['count_elements_page']) ? $config['count_elements_page'] : false;
  16. $page_num_request = isset($_GET['page']) ? (int)$_GET['page'] : 1;
  17. $page_num_request = $page_num_request === 0 ? 1 : $page_num_request;
  18. ?>
  19. <h2><?php echo format_html($_GET['key'])?>
  20. <?php if ($exists) { ?>
  21. <a href="rename.php?s=<?php echo $server['id']?>&amp;d=<?php echo $server['db']?>&amp;key=<?php echo urlencode($_GET['key'])?>"><img src="images/edit.png" width="16" height="16" title="Rename" alt="[R]"></a>
  22. <a href="delete.php?s=<?php echo $server['id']?>&amp;d=<?php echo $server['db']?>&amp;key=<?php echo urlencode($_GET['key'])?>" class="delkey"><img src="images/delete.png" width="16" height="16" title="Delete" alt="[X]"></a>
  23. <a href="export.php?s=<?php echo $server['id']?>&amp;d=<?php echo $server['db']?>&amp;key=<?php echo urlencode($_GET['key'])?>"><img src="images/export.png" width="16" height="16" title="Export" alt="[E]"></a>
  24. <?php } ?>
  25. </h2>
  26. <?php
  27. if (!$exists) {
  28. ?>
  29. This key does not exist.
  30. <?php
  31. require 'includes/footer.inc.php';
  32. die;
  33. }
  34. $alt = false;
  35. $ttl = $redis->ttl($_GET['key']);
  36. try {
  37. $encoding = $redis->object('encoding', $_GET['key']);
  38. } catch (Exception $e) {
  39. $encoding = null;
  40. }
  41. switch ($type) {
  42. case 'string':
  43. $value = $redis->get($_GET['key']);
  44. $value = encodeOrDecode('load', $_GET['key'], $value);
  45. $size = strlen($value);
  46. break;
  47. case 'hash':
  48. $values = $redis->hGetAll($_GET['key']);
  49. foreach ($values as $k => $value) {
  50. $values[$k] = encodeOrDecode('load', $_GET['key'], $value);
  51. }
  52. $size = count($values);
  53. ksort($values);
  54. break;
  55. case 'list':
  56. $size = $redis->lLen($_GET['key']);
  57. break;
  58. case 'set':
  59. $values = $redis->sMembers($_GET['key']);
  60. foreach ($values as $k => $value) {
  61. $values[$k] = encodeOrDecode('load', $_GET['key'], $value);
  62. }
  63. $size = count($values);
  64. sort($values);
  65. break;
  66. case 'zset':
  67. $values = $redis->zRange($_GET['key'], 0, -1);
  68. foreach ($values as $k => $value) {
  69. $values[$k] = encodeOrDecode('load', $_GET['key'], $value);
  70. }
  71. $size = count($values);
  72. break;
  73. }
  74. if (isset($values) && ($count_elements_page !== false)) {
  75. $values = array_slice($values, $count_elements_page * ($page_num_request - 1), $count_elements_page,true);
  76. }
  77. ?>
  78. <table>
  79. <tr><td><div>Type:</div></td><td><div><?php echo format_html($type)?></div></td></tr>
  80. <tr><td><div><abbr title="Time To Live">TTL</abbr>:</div></td><td><div><?php echo ($ttl == -1) ? 'does not expire' : $ttl?> <a href="ttl.php?s=<?php echo $server['id']?>&amp;d=<?php echo $server['db']?>&amp;key=<?php echo urlencode($_GET['key'])?>&amp;ttl=<?php echo $ttl?>"><img src="images/edit.png" width="16" height="16" title="Edit TTL" alt="[E]" class="imgbut"></a></div></td></tr>
  81. <?php if (!is_null($encoding)) { ?>
  82. <tr><td><div>Encoding:</div></td><td><div><?php echo format_html($encoding)?></div></td></tr>
  83. <?php } ?>
  84. <tr><td><div>Size:</div></td><td><div><?php echo $size?> <?php echo ($type == 'string') ? 'characters' : 'items'?></div></td></tr>
  85. </table>
  86. <p>
  87. <?php
  88. // Build pagination div.
  89. if (($count_elements_page !== false) && in_array($type, array('hash', 'list', 'set', 'zset')) && ($size > $count_elements_page)) {
  90. $prev = $page_num_request - 1;
  91. $next = $page_num_request + 1;
  92. $lastpage = ceil($size / $count_elements_page);
  93. $lpm1 = $lastpage - 1;
  94. $adjacents = 3;
  95. $pagination = '<div style="width: inherit; word-wrap: break-word;">';
  96. $url = preg_replace('/&page=(\d+)/i', '', $_SERVER['REQUEST_URI']);
  97. if ($page_num_request > 1) $pagination .= "<a href=\"$url&page=$prev\">&#8592;</a>&nbsp;"; else
  98. $pagination .= "&#8592;&nbsp;";
  99. if ($lastpage < 7 + ($adjacents * 2)) { //not enough pages to bother breaking it up
  100. for ($counter = 1; $counter <= $lastpage; $counter++) {
  101. if ($counter == $page_num_request) $pagination .= $page_num_request . '&nbsp;'; else
  102. $pagination .= "<a href=\"$url&page=$counter\">$counter</a>&nbsp;";
  103. }
  104. } elseif ($lastpage > 5 + ($adjacents * 2)) { //enough pages to hide some
  105. if ($page_num_request < 1 + ($adjacents * 2)) { //close to beginning; only hide later pages
  106. for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++) {
  107. if ($counter == $page_num_request) $pagination .= $page_num_request . '&nbsp;'; else
  108. $pagination .= "<a href=\"$url&page=$counter\">$counter</a>&nbsp;";
  109. }
  110. $pagination .= "...&nbsp;";
  111. $pagination .= "<a href=\"$url&page=$lpm1\">$lpm1</a>&nbsp;";
  112. $pagination .= "<a href=\"$url&page=$lastpage\">$lastpage</a>&nbsp;";
  113. } elseif ($lastpage - ($adjacents * 2) > $page_num_request && $page_num_request > ($adjacents * 2)) { //in middle; hide some front and some back
  114. $pagination .= "<a href=\"$url&page=1\">1</a>&nbsp;";
  115. $pagination .= "<a href=\"$url&page=2\">2</a>&nbsp;";
  116. $pagination .= "...&nbsp;";
  117. for ($counter = $page_num_request - $adjacents; $counter <= $page_num_request + $adjacents; $counter++) {
  118. if ($counter == $page_num_request) $pagination .= $page_num_request . '&nbsp;'; else
  119. $pagination .= "<a href=\"$url&page=$counter\">$counter</a>&nbsp;";
  120. }
  121. $pagination .= "...&nbsp;";
  122. $pagination .= "<a href=\"$url&page=$lpm1\">$lpm1</a>&nbsp;";
  123. $pagination .= "<a href=\"$url&page=$lastpage\">$lastpage</a>&nbsp;";
  124. } else { //close to end; only hide early pages
  125. $pagination .= "<a href=\"$url&page=1\">1</a>&nbsp;";
  126. $pagination .= "<a href=\"$url&page=2\">2</a>&nbsp;";
  127. $pagination .= "...&nbsp;";
  128. for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++) {
  129. if ($counter == $page_num_request) $pagination .= $page_num_request . '&nbsp;'; else
  130. $pagination .= "<a href=\"$url&page=$counter\">$counter</a>&nbsp;";
  131. }
  132. }
  133. }
  134. if ($page_num_request < $counter - 1) $pagination .= "<a href=\"$url&page=$next\">&#8594;</a>&nbsp;"; else
  135. $pagination .= "&#8594;&nbsp;";
  136. $pagination .= "</div>";
  137. }
  138. if (isset($pagination)) {
  139. echo $pagination;
  140. }
  141. // String
  142. if ($type == 'string') { ?>
  143. <table>
  144. <tr><td><div class=data><?php echo format_html($value)?></div></td><td><div>
  145. <a href="edit.php?s=<?php echo $server['id']?>&amp;d=<?php echo $server['db']?>&amp;type=string&amp;key=<?php echo urlencode($_GET['key'])?>"><img src="images/edit.png" width="16" height="16" title="Edit" alt="[E]"></a>
  146. </div></td><td><div>
  147. <a href="delete.php?s=<?php echo $server['id']?>&amp;d=<?php echo $server['db']?>&amp;type=string&amp;key=<?php echo urlencode($_GET['key'])?>" class="delval"><img src="images/delete.png" width="16" height="16" title="Delete" alt="[X]"></a>
  148. </div></td></tr>
  149. </table>
  150. <?php }
  151. // Hash
  152. else if ($type == 'hash') { ?>
  153. <table>
  154. <tr><th><div>Key</div></th><th><div>Value</div></th><th><div>&nbsp;</div></th><th><div>&nbsp;</div></th></tr>
  155. <?php foreach ($values as $hkey => $value) { ?>
  156. <tr <?php echo $alt ? 'class="alt"' : ''?>><td><div><?php echo format_html($hkey)?></div></td><td><div class=data><?php echo format_html($value)?></div></td><td><div>
  157. <a href="edit.php?s=<?php echo $server['id']?>&amp;d=<?php echo $server['db']?>&amp;type=hash&amp;key=<?php echo urlencode($_GET['key'])?>&amp;hkey=<?php echo urlencode($hkey)?>"><img src="images/edit.png" width="16" height="16" title="Edit" alt="[E]"></a>
  158. </div></td><td><div>
  159. <a href="delete.php?s=<?php echo $server['id']?>&amp;d=<?php echo $server['db']?>&amp;type=hash&amp;key=<?php echo urlencode($_GET['key'])?>&amp;hkey=<?php echo urlencode($hkey)?>" class="delval"><img src="images/delete.png" width="16" height="16" title="Delete" alt="[X]"></a>
  160. </div></td></tr>
  161. <?php $alt = !$alt; } ?>
  162. <?php }
  163. // List
  164. else if ($type == 'list') { ?>
  165. <table>
  166. <tr><th><div>Index</div></th><th><div>Value</div></th><th><div>&nbsp;</div></th><th><div>&nbsp;</div></th></tr>
  167. <?php
  168. if (($count_elements_page === false) && ($size > $count_elements_page)) {
  169. $start = 0;
  170. $end = $size;
  171. } else {
  172. $start = $count_elements_page * ($page_num_request - 1);
  173. $end = min($start + $count_elements_page, $size);
  174. }
  175. for ($i = $start; $i < $end; ++$i) {
  176. $value = $redis->lIndex($_GET['key'], $i);
  177. $value = encodeOrDecode('load', $_GET['key'], $value);
  178. ?>
  179. <tr <?php echo $alt ? 'class="alt"' : ''?>><td><div><?php echo $i?></div></td><td><div class=data><?php echo format_html($value)?></div></td><td><div>
  180. <a href="edit.php?s=<?php echo $server['id']?>&amp;d=<?php echo $server['db']?>&amp;type=list&amp;key=<?php echo urlencode($_GET['key'])?>&amp;index=<?php echo $i?>"><img src="images/edit.png" width="16" height="16" title="Edit" alt="[E]"></a>
  181. </div></td><td><div>
  182. <a href="delete.php?s=<?php echo $server['id']?>&amp;d=<?php echo $server['db']?>&amp;type=list&amp;key=<?php echo urlencode($_GET['key'])?>&amp;index=<?php echo $i?>" class="delval"><img src="images/delete.png" width="16" height="16" title="Delete" alt="[X]"></a>
  183. </div></td></tr>
  184. <?php $alt = !$alt; } ?>
  185. <?php }
  186. // Set
  187. else if ($type == 'set') {
  188. ?>
  189. <table>
  190. <tr><th><div>Value</div></th><th><div>&nbsp;</div></th><th><div>&nbsp;</div></th></tr>
  191. <?php foreach ($values as $value) {
  192. $display_value = $redis->exists($value) ? '<a href="view.php?s='.$server['id'].'&d='.$server['db'].'&key='.urlencode($value).'">'.format_html($value).'</a>' : format_html($value);
  193. ?>
  194. <tr <?php echo $alt ? 'class="alt"' : ''?>><td><div class=data><?php echo $display_value ?></div></td><td><div>
  195. <a href="edit.php?s=<?php echo $server['id']?>&amp;d=<?php echo $server['db']?>&amp;type=set&amp;key=<?php echo urlencode($_GET['key'])?>&amp;value=<?php echo urlencode($value)?>"><img src="images/edit.png" width="16" height="16" title="Edit" alt="[E]"></a>
  196. </div></td><td><div>
  197. <a href="delete.php?s=<?php echo $server['id']?>&amp;d=<?php echo $server['db']?>&amp;type=set&amp;key=<?php echo urlencode($_GET['key'])?>&amp;value=<?php echo urlencode($value)?>" class="delval"><img src="images/delete.png" width="16" height="16" title="Delete" alt="[X]"></a>
  198. </div></td></tr>
  199. <?php $alt = !$alt; } ?>
  200. <?php }
  201. // ZSet
  202. else if ($type == 'zset') { ?>
  203. <table>
  204. <tr><th><div>Score</div></th><th><div>Value</div></th><th><div>&nbsp;</div></th><th><div>&nbsp;</div></th></tr>
  205. <?php foreach ($values as $value) {
  206. $score = $redis->zScore($_GET['key'], $value);
  207. $display_value = $redis->exists($value) ? '<a href="view.php?s='.$server['id'].'&d='.$server['db'].'&key='.urlencode($value).'">'.format_html($value).'</a>' : format_html($value);
  208. ?>
  209. <tr <?php echo $alt ? 'class="alt"' : ''?>><td><div><?php echo $score?></div></td><td><div class=data><?php echo $display_value ?></div></td><td><div>
  210. <a href="edit.php?s=<?php echo $server['id']?>&amp;d=<?php echo $server['db']?>&amp;type=zset&amp;key=<?php echo urlencode($_GET['key'])?>&amp;score=<?php echo $score?>&amp;value=<?php echo urlencode($value)?>"><img src="images/edit.png" width="16" height="16" title="Edit" alt="[E]"></a>
  211. <a href="delete.php?s=<?php echo $server['id']?>&amp;d=<?php echo $server['db']?>&amp;type=zset&amp;key=<?php echo urlencode($_GET['key'])?>&amp;value=<?php echo urlencode($value)?>" class="delval"><img src="images/delete.png" width="16" height="16" title="Delete" alt="[X]"></a>
  212. </div></td></tr>
  213. <?php $alt = !$alt; } ?>
  214. <?php }
  215. if ($type != 'string') { ?>
  216. </table>
  217. <p>
  218. <a href="edit.php?s=<?php echo $server['id']?>&amp;d=<?php echo $server['db']?>&amp;type=<?php echo $type?>&amp;key=<?php echo urlencode($_GET['key'])?>" class="add">Add another value</a>
  219. </p>
  220. <?php }
  221. if (isset($pagination)) {
  222. echo $pagination;
  223. }
  224. require 'includes/footer.inc.php';