/admin/includes/functions/html_graphs.php

https://github.com/ZenMagick/zc-base · PHP · 591 lines · 424 code · 108 blank · 59 comment · 81 complexity · c77d6409f2442c01267fb17712878ff4 MD5 · raw file

  1. <?php
  2. /**
  3. * @package admin
  4. * @copyright Copyright 2003-2009 Zen Cart Development Team
  5. * @copyright Portions Copyright 2003 osCommerce
  6. * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0
  7. * @version $Id: html_graphs.php 14139 2009-08-10 13:46:02Z wilt $
  8. */
  9. ////
  10. // calls routines to initialize defaults, set up table
  11. // print data, and close table.
  12. function html_graph($names, $values, $bars, $vals, $dvalues = 0, $dbars = 0) {
  13. // set the error level on entry and exit so as not to interfear with anyone elses error checking.
  14. $er = error_reporting(1);
  15. // set the values that the user didn't
  16. $vals = hv_graph_defaults($vals);
  17. $html_graph_string = start_graph($vals, $names);
  18. if ($vals['type'] == 0) {
  19. $html_graph_string .= horizontal_graph($names, $values, $bars, $vals);
  20. } elseif ($vals['type'] == 1) {
  21. $html_graph_string .= vertical_graph($names, $values, $bars, $vals);
  22. } elseif ($vals['type'] == 2) {
  23. $html_graph_string .= double_horizontal_graph($names, $values, $bars, $vals, $dvalues, $dbars);
  24. } elseif ($vals['type'] == 3) {
  25. $html_graph_string .= double_vertical_graph($names, $values, $bars, $vals, $dvalues, $dbars);
  26. }
  27. $html_graph_string .= end_graph();
  28. // Set the error level back to where it was.
  29. error_reporting($er);
  30. return $html_graph_string;
  31. }
  32. ////
  33. // sets up the $vals array by initializing all values to null. Used to avoid
  34. // warnings from error_reporting being set high. This routine only needs to be
  35. // called if you are worried about using uninitialized variables.
  36. function html_graph_init() {
  37. $vals = array('vlabel'=>'',
  38. 'hlabel'=>'',
  39. 'type'=>'',
  40. 'cellpadding'=>'',
  41. 'cellspacing'=>'',
  42. 'border'=>'',
  43. 'width'=>'',
  44. 'background'=>'',
  45. 'vfcolor'=>'',
  46. 'hfcolor'=>'',
  47. 'vbgcolor'=>'',
  48. 'hbgcolor'=>'',
  49. 'vfstyle'=>'',
  50. 'hfstyle'=>'',
  51. 'noshowvals'=>'',
  52. 'scale'=>'',
  53. 'namebgcolor'=>'',
  54. 'valuebgcolor'=>'',
  55. 'namefcolor'=>'',
  56. 'valuefcolor'=>'',
  57. 'namefstyle'=>'',
  58. 'valuefstyle'=>'',
  59. 'doublefcolor'=>'');
  60. return($vals);
  61. }
  62. ////
  63. // prints out the table header and graph labels
  64. function start_graph($vals, $names) {
  65. $start_graph_string = '<table cellpadding="' . $vals['cellpadding'] . '" cellspacing="' . $vals['cellspacing'] . '" border="' . $vals['border'] . '"';
  66. if ($vals['width'] != 0) $start_graph_string .= ' width="' . $vals['width'] . '"';
  67. if ($vals['background']) $start_graph_string .= ' background="' . $vals['background'] . '"';
  68. $start_graph_string .= '>' . "\n";
  69. if ( ($vals['vlabel']) || ($vals['hlabel']) ) {
  70. if ( ($vals['type'] == 0) || ($vals['type'] == 2) ) {
  71. // horizontal chart
  72. $rowspan = sizeof($names) + 1;
  73. $colspan = 3;
  74. } elseif ( ($vals['type'] == 1) || ($vals['type'] == 3) ) {
  75. // vertical chart
  76. $rowspan = 3;
  77. $colspan = sizeof($names) + 1;
  78. }
  79. $start_graph_string .= ' <tr>' . "\n" .
  80. ' <td align="center" valign="center"';
  81. // if a background was choosen don't print cell BGCOLOR
  82. if (!$vals['background']) $start_graph_string .= ' bgcolor="' . $vals['hbgcolor'] . '"';
  83. $start_graph_string .= ' colspan="' . $colspan . '"><font color="' . $vals['hfcolor'] . '" style="' . $vals['hfstyle'] . '"><b>' . $vals['hlabel'] . '</b></font></td>' . "\n" .
  84. ' </tr>' . "\n" .
  85. ' <tr>' . "\n" .
  86. ' <td align="center" valign="center"';
  87. // if a background was choosen don't print cell BGCOLOR
  88. if (!$vals['background']) $start_graph_string .= ' bgcolor="' . $vals['vbgcolor'] . '"';
  89. $start_graph_string .= ' rowspan="' . $rowspan . '"><font color="' . $vals['vfcolor'] . '" style="' . $vals['vfstyle'] . '"><b>' . $vals['vlabel'] . '</b></font></td>' . "\n" .
  90. ' </tr>' . "\n";
  91. }
  92. return $start_graph_string;
  93. }
  94. ////
  95. // prints out the table footer
  96. function end_graph() {
  97. return '</table>' . "\n";
  98. }
  99. ////
  100. // sets the default values for the $vals array
  101. function hv_graph_defaults($vals) {
  102. if (!$vals['vfcolor']) $vals['vfcolor'] = '#000000';
  103. if (!$vals['hfcolor']) $vals['hfcolor'] = '#000000';
  104. if (!$vals['vbgcolor']) $vals['vbgcolor'] = '#FFFFFF';
  105. if (!$vals['hbgcolor']) $vals['hbgcolor'] = '#FFFFFF';
  106. if (!$vals['cellpadding']) $vals['cellpadding'] = '0';
  107. if (!$vals['cellspacing']) $vals['cellspacing'] = '0';
  108. if (!$vals['border']) $vals['border'] = '0';
  109. if (!$vals['scale']) $vals['scale'] = '1';
  110. if (!$vals['namebgcolor']) $vals['namebgcolor'] = '#FFFFFF';
  111. if (!$vals['valuebgcolor']) $vals['valuebgcolor'] = '#FFFFFF';
  112. if (!$vals['namefcolor']) $vals['namefcolor'] = '#000000';
  113. if (!$vals['valuefcolor']) $vals['valuefcolor'] = '#000000';
  114. if (!$vals['doublefcolor']) $vals['doublefcolor'] = '#886666';
  115. return $vals;
  116. }
  117. ////
  118. // prints out the actual data for the horizontal chart
  119. function horizontal_graph($names, $values, $bars, $vals) {
  120. $horizontal_graph_string = '';
  121. for($i = 0, $n = sizeof($values); $i < $n; $i++) {
  122. $horizontal_graph_string .= ' <tr>' . "\n" .
  123. ' <td align="right"';
  124. // if a background was choosen don't print cell BGCOLOR
  125. if (!$vals['background']) $horizontal_graph_string .= ' bgcolor="' . $vals['namebgcolor'] . '"';
  126. $horizontal_graph_string .= '><font size="-1" color="' . $vals['namefcolor'] . '" style="' . $vals['namefstyle'] . '">' . $names[$i] . '</font></td>' . "\n" .
  127. ' <td';
  128. // if a background was choosen don't print cell BGCOLOR
  129. if (!$vals['background']) $horizontal_graph_string .= ' bgcolor="' . $vals['valuebgcolor'] . '"';
  130. $horizontal_graph_string .= '>';
  131. // decide if the value in bar is a color code or image.
  132. if (preg_match('/^#/', $bars[$i])) {
  133. $horizontal_graph_string .= '<table cellpadding="0" cellspacing="0" bgcolor="' . $bars[$i] . '" width="' . ($values[$i] * $vals['scale']) . '">' . "\n" .
  134. ' <tr>' . "\n" .
  135. ' <td>&nbsp;</td>' . "\n" .
  136. ' </tr>' . "\n" .
  137. '</table>';
  138. } else {
  139. $horizontal_graph_string .= '<img src="' . $bars[$i] . '" height="10" width="' . ($values[$i] * $vals['scale']) . '">';
  140. }
  141. if (!$vals['noshowvals']) {
  142. $horizontal_graph_string .= '<i><font size="-2" color="' . $vals['valuefcolor'] . '" style="' . $vals['valuefstyle'] . '">(' . $values[$i] . ')</font></i>';
  143. }
  144. $horizontal_graph_string .= '</td>' . "\n" .
  145. ' </tr>' . "\n";
  146. } // endfor
  147. return $horizontal_graph_string;
  148. }
  149. ////
  150. // prints out the actual data for the vertical chart
  151. function vertical_graph($names, $values, $bars, $vals) {
  152. $vertical_graph_string = ' <tr>' . "\n";
  153. for ($i = 0, $n = sizeof($values); $i < $n; $i++) {
  154. $vertical_graph_string .= ' <td align="center" valign="bottom"';
  155. // if a background was choosen don't print cell BGCOLOR
  156. if (!$vals['background']) $vertical_graph_string .= ' bgcolor="' . $vals['valuebgcolor'] . '"';
  157. $vertical_graph_string .= '>';
  158. if (!$vals['noshowvals']) {
  159. $vertical_graph_string .= '<i><font size="-2" color="' . $vals['valuefcolor'] . '" style="' . $vals['valuefstyle'] . '">(' . $values[$i] . ')</font></i><br>';
  160. }
  161. $vertical_graph_string .= '<img src="' . $bars[$i] . '" width="5" height="';
  162. // values of zero are displayed wrong because a image height of zero
  163. // gives a strange behavior in Netscape. For this reason the height
  164. // is set at 1 pixel if the value is zero. - Jan Diepens
  165. if ($values[$i] != 0) {
  166. $vertical_graph_string .= $values[$i] * $vals['scale'];
  167. } else {
  168. $vertical_graph_string .= '1';
  169. }
  170. $vertical_graph_string .= '"></td>' . "\n";
  171. } // endfor
  172. $vertical_graph_string .= ' </tr>' . "\n" .
  173. ' <tr>' . "\n";
  174. for ($i = 0, $n = sizeof($values); $i < $n; $i++) {
  175. $vertical_graph_string .= ' <td align="center" valign="top"';
  176. // if a background was choosen don't print cell BGCOLOR
  177. if (!$vals['background']) $vertical_graph_string .= ' bgcolor="' . $vals['namebgcolor'] . '"';
  178. $vertical_graph_string .= '><font size="-1" color="' . $vals['namefcolor'] . '" style="' . $vals['namefstyle'] . '">' . $names[$i] . '</font></td>' . "\n";
  179. } // endfor
  180. $vertical_graph_string .= ' </tr>' . "\n";
  181. return $vertical_graph_string;
  182. }
  183. ////
  184. // prints out the actual data for the double horizontal chart
  185. function double_horizontal_graph($names, $values, $bars, $vals, $dvalues, $dbars) {
  186. $double_horizontal_graph_string = '';
  187. for($i = 0, $n = sizeof($values); $i < $n; $i++) {
  188. $double_horizontal_graph_string .= ' <tr>' . "\n" .
  189. ' <td align="right"';
  190. // if a background was choosen don't print cell BGCOLOR
  191. if (!$vals['background']) $double_horizontal_graph_string .= ' bgcolor="' . $vals['namebgcolor'] . '"';
  192. $double_horizontal_graph_string .= '><font size="-1" color="' . $vals['namefcolor'] . '" style="' . $vals['namefstyle'] . '">' . $names[$i] . '</font></td>' . "\n" .
  193. ' <td';
  194. // if a background was choosen don't print cell BGCOLOR
  195. if (!$vals['background']) $double_horizontal_graph_string .= ' bgcolor="' . $vals['valuebgcolor'] . '"';
  196. $double_horizontal_graph_string .= '><table align="left" cellpadding="0" cellspacing="0" width="' . ($dvalues[$i] * $vals['scale']) . '">' . "\n" .
  197. ' <tr>' . "\n" .
  198. ' <td';
  199. // set background to a color if it starts with # or an image otherwise.
  200. if (preg_match('/^#/', $dbars[$i])) {
  201. $double_horizontal_graph_string .= ' bgcolor="' . $dbars[$i] . '">';
  202. } else {
  203. $double_horizontal_graph_string .= ' background="' . $dbars[$i] . '">';
  204. }
  205. $double_horizontal_graph_string .= '<nowrap>';
  206. // decide if the value in bar is a color code or image.
  207. if (preg_match('/^#/', $bars[$i])) {
  208. $double_horizontal_graph_string .= '<table align="left" cellpadding="0" cellspacing="0" bgcolor="' . $bars[$i] . '" width="' . ($values[$i] * $vals['scale']) . '">' . "\n" .
  209. ' <tr>' . "\n" .
  210. ' <td>&nbsp;</td>' . "\n" .
  211. ' </tr>' . "\n" .
  212. '</table>';
  213. } else {
  214. $double_horizontal_graph_string .= '<img src="' . $bars[$i] . '" height="10" width="' . ($values[$i] * $vals['scale']) . '">';
  215. }
  216. if (!$vals['noshowvals']) {
  217. $double_horizontal_graph_string .= '<i><font size="-3" color="' . $vals['valuefcolor'] . '" style="' . $vals['valuefstyle'] . '">(' . $values[$i] . ')</font></i>';
  218. }
  219. $double_horizontal_graph_string .= '</nowrap></td>' . "\n" .
  220. ' </tr>' . "\n" .
  221. ' </table>';
  222. if (!$vals['noshowvals']) {
  223. $double_horizontal_graph_string .= '<i><font size="-3" color="' . $vals['doublefcolor'] . '" style="' . $vals['valuefstyle'] . '">(' . $dvalues[$i] . ')</font></i>';
  224. }
  225. $double_horizontal_graph_string .= '</td>' . "\n" .
  226. ' </tr>' . "\n";
  227. } // endfor
  228. return $double_horizontal_graph_string;
  229. }
  230. ////
  231. // prints out the actual data for the double vertical chart
  232. function double_vertical_graph($names, $values, $bars, $vals, $dvalues, $dbars) {
  233. $double_vertical_graph_string = ' <tr>' . "\n";
  234. for ($i = 0, $n = sizeof($values); $i < $n; $i++) {
  235. $double_vertical_graph_string .= ' <td align="center" valign="bottom"';
  236. // if a background was choosen don't print cell BGCOLOR
  237. if (!$vals['background']) $double_vertical_graph_string .= ' bgcolor="' . $vals['valuebgcolor'] . '"';
  238. $double_vertical_graph_string .= '><table>' . "\n" .
  239. ' <tr>' . "\n" .
  240. ' <td align="center" valign="bottom"';
  241. // if a background was choosen don't print cell BGCOLOR
  242. if (!$vals['background']) $double_vertical_graph_string .= ' bgcolor="' . $vals['valuebgcolor'] . '"';
  243. $double_vertical_graph_string .= '>';
  244. if (!$vals['noshowvals'] && $values[$i]) {
  245. $double_vertical_graph_string .= '<i><font size="-2" color="' . $vals['valuefcolor'] . '" style="' . $vals['valuefstyle'] . '">(' . $values[$i] . ')</font></i><br>';
  246. }
  247. $double_vertical_graph_string .= '<img src="' . $bars[$i] . '" width="10" height="';
  248. if ($values[$i] != 0) {
  249. $double_vertical_graph_string .= $values[$i] * $vals['scale'];
  250. } else {
  251. $double_vertical_graph_string .= '1';
  252. }
  253. $double_vertical_graph_string .= '"></td>' . "\n" .
  254. ' <td align="center" valign="bottom"';
  255. // if a background was choosen don't print cell BGCOLOR
  256. if (!$vals['background']) $double_vertical_graph_string .= ' bgcolor="' . $vals['valuebgcolor'] . '"';
  257. $double_vertical_graph_string .= '>';
  258. if (!$vals['noshowvals'] && $dvalues[$i]) {
  259. $double_vertical_graph_string .= '<i><font size="-2" color="' . $vals['doublefcolor'] . '" style="' . $vals['valuefstyle'] . '">(' . $dvalues[$i] . ')</font></i><br>';
  260. }
  261. $double_vertical_graph_string .= '<img src="' . $dbars[$i] . '" width="10" height="';
  262. if ($dvalues[$i] != 0) {
  263. $double_vertical_graph_string .= $dvalues[$i] * $vals['scale'];
  264. } else {
  265. $double_vertical_graph_string .= '1';
  266. }
  267. $double_vertical_graph_string .= '"></td>' . "\n" .
  268. ' </tr>' . "\n" .
  269. ' </table></td>' . "\n";
  270. } // endfor
  271. $double_vertical_graph_string .= ' </tr>' . "\n" .
  272. ' <tr>' . "\n";
  273. for ($i = 0, $n = sizeof($values); $i < $n; $i++) {
  274. $double_vertical_graph_string .= ' <td align="center" valign="top"';
  275. // if a background was choosen don't print cell BGCOLOR
  276. if (!$vals['background']) $double_vertical_graph_string .= ' bgcolor="' . $vals['namebgcolor'] . '"';
  277. $double_vertical_graph_string .= '><font size="-1" color="' . $vals['namefcolor'] . '" style="' . $vals['namefstyle'] . '">' . $names[$i] . '</font></td>' . "\n";
  278. } // endfor
  279. $double_vertical_graph_string .= ' </tr>' . "\n";
  280. return $double_vertical_graph_string;
  281. }
  282. ////
  283. // draws a double vertical bar graph for the banner views vs clicks statistics
  284. function zen_banner_graph_infoBox($banner_id, $days) {
  285. global $db;
  286. $names = array();
  287. $values = array();
  288. $dvalues = array();
  289. $banner_stats = $db->Execute("select dayofmonth(banners_history_date) as name,
  290. banners_shown as value, banners_clicked as dvalue
  291. from " . TABLE_BANNERS_HISTORY . "
  292. where banners_id = '" . $banner_id . "'
  293. and to_days(now()) - to_days(banners_history_date) < " . $days . "
  294. order by banners_history_date");
  295. while (!$banner_stats->EOF) {
  296. $names[] = $banner_stats->fields['name'];
  297. $values[] = $banner_stats->fields['value'];
  298. $dvalues[] = $banner_stats->fields['dvalue'];
  299. $banner_stats->MoveNext();
  300. }
  301. $largest = @max($values);
  302. $bars = array();
  303. $dbars = array();
  304. for ($i = 0, $n = sizeof($values); $i < $n; $i++) {
  305. $bars[$i] = DIR_WS_IMAGES . 'graph_hbar_blue.gif';
  306. $dbars[$i] = DIR_WS_IMAGES . 'graph_hbar_red.gif';
  307. }
  308. $graph_vals = @array('vlabel'=>TEXT_BANNERS_DATA,
  309. 'hlabel'=>TEXT_BANNERS_LAST_3_DAYS,
  310. 'type'=>'3',
  311. 'cellpadding'=>'',
  312. 'cellspacing'=>'1',
  313. 'border'=>'',
  314. 'width'=>'',
  315. 'vfcolor'=>'#ffffff',
  316. 'hfcolor'=>'#ffffff',
  317. 'vbgcolor'=>'#81a2b6',
  318. 'hbgcolor'=>'#81a2b6',
  319. 'vfstyle'=>'Verdana, Arial, Helvetica',
  320. 'hfstyle'=>'Verdana, Arial, Helvetica',
  321. 'scale'=>100/$largest,
  322. 'namebgcolor'=>'#f3f5fe',
  323. 'valuebgcolor'=>'#f3f5fe',
  324. 'namefcolor'=>'',
  325. 'valuefcolor'=>'#0000d0',
  326. 'namefstyle'=>'Verdana, Arial, Helvetica',
  327. 'valuefstyle'=>'',
  328. 'doublefcolor'=>'#ff7339');
  329. return html_graph($names, $values, $bars, $graph_vals, $dvalues, $dbars);
  330. }
  331. ////
  332. // draws a double vertical bar graph for the banner views vs clicks statistics
  333. function zen_banner_graph_yearly($banner_id) {
  334. global $db, $banner, $_GET;
  335. $banner_stats = $db->Execute("select year(banners_history_date) as year,
  336. sum(banners_shown) as value, sum(banners_clicked) as dvalue
  337. from " . TABLE_BANNERS_HISTORY . "
  338. where banners_id = '" . $banner_id . "'
  339. group by year(banners_history_date)");
  340. while (!$banner_stats->EOF) {
  341. $names[] = $banner_stats->fields['year'];
  342. $values[] = (($banner_stats->fields['value']) ? $banner_stats->fields['value'] : '0');
  343. $dvalues[] = (($banner_stats->fields['dvalue']) ? $banner_stats->fields['dvalue'] : '0');
  344. $banner_stats->MoveNext();
  345. }
  346. $largest = @max($values);
  347. $bars = array();
  348. $dbars = array();
  349. for ($i = 0, $n = sizeof($values); $i < $n; $i++) {
  350. $bars[$i] = DIR_WS_IMAGES . 'graph_hbar_blue.gif';
  351. $dbars[$i] = DIR_WS_IMAGES . 'graph_hbar_red.gif';
  352. }
  353. $graph_vals = @array('vlabel'=>TEXT_BANNERS_DATA,
  354. 'hlabel'=>sprintf(TEXT_BANNERS_YEARLY_STATISTICS, $banner->fields['banners_title']),
  355. 'type'=>'3',
  356. 'cellpadding'=>'',
  357. 'cellspacing'=>'1',
  358. 'border'=>'',
  359. 'width'=>'',
  360. 'vfcolor'=>'#ffffff',
  361. 'hfcolor'=>'#ffffff',
  362. 'vbgcolor'=>'#81a2b6',
  363. 'hbgcolor'=>'#81a2b6',
  364. 'vfstyle'=>'Verdana, Arial, Helvetica',
  365. 'hfstyle'=>'Verdana, Arial, Helvetica',
  366. 'scale'=>100/$largest,
  367. 'namebgcolor'=>'#f3f5fe',
  368. 'valuebgcolor'=>'#f3f5fe',
  369. 'namefcolor'=>'',
  370. 'valuefcolor'=>'#0000d0',
  371. 'namefstyle'=>'Verdana, Arial, Helvetica',
  372. 'valuefstyle'=>'',
  373. 'doublefcolor'=>'#ff7339');
  374. return html_graph($names, $values, $bars, $graph_vals, $dvalues, $dbars);
  375. }
  376. ////
  377. // draws a double vertical bar graph for the banner views vs clicks statistics
  378. function zen_banner_graph_monthly($banner_id) {
  379. global $db, $banner, $_GET;
  380. $year = (($_GET['year']) ? $_GET['year'] : date('Y'));
  381. for ($i=1; $i<13; $i++) {
  382. $names[] = strftime('%b', mktime(0,0,0,$i));
  383. $values[] = '0';
  384. $dvalues[] = '0';
  385. }
  386. $banner_stats = $db->Execute("select month(banners_history_date) as banner_month, sum(banners_shown) as value,
  387. sum(banners_clicked) as dvalue
  388. from " . TABLE_BANNERS_HISTORY . "
  389. where banners_id = '" . $banner_id . "'
  390. and year(banners_history_date) = '" . $year . "'
  391. group by month(banners_history_date)");
  392. while (!$banner_stats->EOF) {
  393. $names[($banner_stats->fields['banner_month']-1)] = strftime('%b', mktime(0,0,0,$banner_stats->fields['banner_month']));
  394. $values[($banner_stats->fields['banner_month']-1)] = (($banner_stats->fields['value']) ? $banner_stats->fields['value'] : '0');
  395. $dvalues[($banner_stats->fields['banner_month']-1)] = (($banner_stats->fields['dvalue']) ? $banner_stats->fields['dvalue'] : '0');
  396. $banner_stats->MoveNext();
  397. }
  398. $largest = @max($values);
  399. $bars = array();
  400. $dbars = array();
  401. for ($i = 0, $n = sizeof($values); $i < $n; $i++) {
  402. $bars[$i] = DIR_WS_IMAGES . 'graph_hbar_blue.gif';
  403. $dbars[$i] = DIR_WS_IMAGES . 'graph_hbar_red.gif';
  404. }
  405. $graph_vals = @array('vlabel'=>TEXT_BANNERS_DATA,
  406. 'hlabel'=>sprintf(TEXT_BANNERS_MONTHLY_STATISTICS, $banner->fields['banners_title'], date('Y')),
  407. 'type'=>'3',
  408. 'cellpadding'=>'',
  409. 'cellspacing'=>'1',
  410. 'border'=>'',
  411. 'width'=>'',
  412. 'vfcolor'=>'#ffffff',
  413. 'hfcolor'=>'#ffffff',
  414. 'vbgcolor'=>'#81a2b6',
  415. 'hbgcolor'=>'#81a2b6',
  416. 'vfstyle'=>'Verdana, Arial, Helvetica',
  417. 'hfstyle'=>'Verdana, Arial, Helvetica',
  418. 'scale'=>100/$largest,
  419. 'namebgcolor'=>'#f3f5fe',
  420. 'valuebgcolor'=>'#f3f5fe',
  421. 'namefcolor'=>'',
  422. 'valuefcolor'=>'#0000d0',
  423. 'namefstyle'=>'Verdana, Arial, Helvetica',
  424. 'valuefstyle'=>'',
  425. 'doublefcolor'=>'#ff7339');
  426. return html_graph($names, $values, $bars, $graph_vals, $dvalues, $dbars);
  427. }
  428. ////
  429. // draws a double vertical bar graph for the banner views vs clicks statistics
  430. function zen_banner_graph_daily($banner_id) {
  431. global $db, $banner, $_GET;
  432. $year = (isset($_GET['year']) ? $_GET['year'] : date('Y'));
  433. $month = (isset($_GET['month']) ? $_GET['month'] : date('n'));
  434. $days = (date('t', mktime(0,0,0,$month))+1);
  435. $stats = array();
  436. for ($i=1; $i<$days; $i++) {
  437. $names[] = $i;
  438. $values[] = '0';
  439. $dvalues[] = '0';
  440. }
  441. $banner_stats = $db->Execute("select dayofmonth(banners_history_date) as banner_day,
  442. banners_shown as value, banners_clicked as dvalue
  443. from " . TABLE_BANNERS_HISTORY . "
  444. where banners_id = '" . $banner_id . "'
  445. and month(banners_history_date) = '" . $month . "'
  446. and year(banners_history_date) = '" . $year . "'");
  447. while (!$banner_stats->EOF) {
  448. $names[($banner_stats->fields['banner_day']-1)] = $banner_stats->fields['banner_day'];
  449. $values[($banner_stats->fields['banner_day']-1)] = (($banner_stats->fields['value']) ? $banner_stats->fields['value'] : '0');
  450. $dvalues[($banner_stats->fields['banner_day']-1)] = (($banner_stats->fields['dvalue']) ? $banner_stats->fields['dvalue'] : '0');
  451. $banner_stats->MoveNext();
  452. }
  453. $largest = @max($values);
  454. $bars = array();
  455. $dbars = array();
  456. for ($i = 0, $n = sizeof($values); $i < $n; $i++) {
  457. $bars[$i] = DIR_WS_IMAGES . 'graph_hbar_blue.gif';
  458. $dbars[$i] = DIR_WS_IMAGES . 'graph_hbar_red.gif';
  459. }
  460. $graph_vals = @array('vlabel'=>TEXT_BANNERS_DATA,
  461. 'hlabel'=>sprintf(TEXT_BANNERS_DAILY_STATISTICS, $banner->fields['banners_title'], strftime('%B', mktime(0,0,0,$month)), $year),
  462. 'type'=>'3',
  463. 'cellpadding'=>'',
  464. 'cellspacing'=>'1',
  465. 'border'=>'',
  466. 'width'=>'',
  467. 'vfcolor'=>'#ffffff',
  468. 'hfcolor'=>'#ffffff',
  469. 'vbgcolor'=>'#81a2b6',
  470. 'hbgcolor'=>'#81a2b6',
  471. 'vfstyle'=>'Verdana, Arial, Helvetica',
  472. 'hfstyle'=>'Verdana, Arial, Helvetica',
  473. 'scale'=>100/$largest,
  474. 'namebgcolor'=>'#f3f5fe',
  475. 'valuebgcolor'=>'#f3f5fe',
  476. 'namefcolor'=>'',
  477. 'valuefcolor'=>'#0000d0',
  478. 'namefstyle'=>'Verdana, Arial, Helvetica',
  479. 'valuefstyle'=>'',
  480. 'doublefcolor'=>'#ff7339');
  481. return html_graph($names, $values, $bars, $graph_vals, $dvalues, $dbars);
  482. }
  483. ?>