function plot($file) { $min = $this->m_minValue; $max = $this->m_maxValue + ($this->m_maxValue - $this->m_minValue) * 0.1 / 5 * 5; // margins $margin = $this->m_margin; $marginy = $margin; if ($this->m_title) { $marginy += $this->m_fontHeight * 1.5; } $marginbottom = $margin + 5; if ($this->m_labelsDirection == HORIZONTAL) { $marginbottom += $this->m_labelsFontWidth; } else { $marginbottom += $this->m_labelsMaxLength * $this->m_labelsFontWidth; } if (@$this->m_axisXTitle) { $marginbottom += $this->m_axisXFontHeight * 1.5; } $height = $this->m_height - $marginy - $marginbottom; if ($this->m_withLegend) { // } $maxvalues = floor($height / $this->m_labelsFontHeight / 1.5); // max displayable values $marginx = $margin + 5; $marginx += strlen(number_format($this->m_maxValue, $this->m_numberOfDecimals, ',', '.')) * $this->m_labelsFontWidth; if (@$this->m_axisYTitle) { $marginx += $this->m_axisYFontHeight * 1.5; } $width = $this->m_width - $marginx - $margin; $w = $width / ($this->m_maxCount + 0.2); $dx = $w * 0.8; $sx = $w - $dx; $width = $w * $this->m_maxCount + $sx; if ($max - $min == 0) { $maxMin = MAX_MIN; } else { $maxMin = $max - $min; } $h = $height / $maxvalues; $dy = $height / $maxMin; $vdy = ($max - $min) / $maxvalues; //plot border & background imagefilledrectangle($this->m_image, $marginx, $marginy, $marginx + $width, $marginy + $height, $this->m_fillColor); // plot title if ($this->m_title) { imagestring($this->m_image, $this->m_font, ($this->m_width - strlen($this->m_title) * $this->m_fontWidth) / 2, $margin, $this->m_title, $this->m_textColor); } // plot values (Y) _set_style($this->m_image, $this->m_axisYStyle, $this->m_axisYColor, $this->m_fillColor); for ($i = 0; $i <= $maxvalues; $i++) { $yvalue = number_format($min + $vdy * $i, $this->m_numberOfDecimals, $this->m_decimalSeparator, $this->m_thousandsSeparator); imageline($this->m_image, $marginx - 3, $marginy + $height - $i * $h, $marginx, $marginy + $height - $i * $h, IMG_COLOR_STYLED); imagestring($this->m_image, $this->m_labelsFont, $marginx - strlen($yvalue) * $this->m_labelsFontWidth - 4, $marginy + $height - $i * $h - $this->m_labelsFontHeight / 2, $yvalue, $this->m_labelsTextColor); } // plot grid if ($this->m_showHGrid) { for ($i = 0; $i <= $maxvalues; $i++) { _set_style($this->m_image, $this->m_gridHStyle, $this->m_gridHColor, $this->m_fillColor); imageline($this->m_image, $marginx, $marginy + $height - $i * $h, $marginx + $width, $marginy + $height - $i * $h, IMG_COLOR_STYLED); } } if ($this->m_showVGrid) { for ($i = 0; $i < count($this->m_labels); $i++) { $len = strlen($this->m_labels[$i]); if ($len > 0) { _set_style($this->m_image, $this->m_gridVStyle, $this->m_gridVColor, $this->m_fillColor); imageline($this->m_image, $marginx + $i * $w + $dx / 2 + $sx, $height + $marginy, $i * $w + $marginx + $dx / 2 + $sx, $marginy, IMG_COLOR_STYLED); } } } _set_style($this->m_image, $this->m_style, $this->m_strokeColor, $this->m_fillColor); imagerectangle($this->m_image, $marginx, $marginy, $marginx + $width, $marginy + $height, IMG_COLOR_STYLED); // plot graph foreach ($this->m_series as $series) { $cnt = count($series->m_values); // LINE PLOT if ($series->m_type == 'line') { _set_style($this->m_image, $series->m_style, $series->m_strokeColor, $this->m_fillColor); $startx = $marginx + $dx / 2 + $sx; $starty = $marginy + $height - $dy * ($series->m_values[0] - $min); for ($i = 1; $i < $cnt; $i++) { $x = $marginx + $i * $w + $dx / 2 + $sx; $y = $marginy + $height - $dy * ($series->m_values[$i] - $min); imageline($this->m_image, $startx, $starty, $x, $y, IMG_COLOR_STYLED); $startx = $x; $starty = $y; } // AREA PLOT } else { if ($series->m_type == 'area') { _set_style($this->m_image, $series->m_style, $series->m_strokeColor, $this->m_fillColor); $vpoints = ''; $startx = $marginx + $dx / 2 + $sx; $starty = $marginy + $height - $dy * ($series->m_values[0] - $min); $vpoints[] = $startx; $vpoints[] = $marginy + $height; for ($i = 0; $i < $cnt; $i++) { $x = $marginx + $i * $w + $dx / 2 + $sx; $y = $marginy + $height - $dy * ($series->m_values[$i] - $min); $vpoints[] = $x; $vpoints[] = $y; $startx = $x; $starty = $y; } $vpoints[] = $x; $vpoints[] = $marginy + $height; imagefilledpolygon($this->m_image, $vpoints, $cnt + 2, $series->m_fillColor); imagepolygon($this->m_image, $vpoints, $cnt + 2, IMG_COLOR_STYLED); // BAR PLOT } else { if ($series->m_type == 'bar') { _set_style($this->m_image, $series->m_style, $series->m_strokeColor, $this->m_fillColor); $vpoints = ''; for ($i = 0; $i < $cnt; $i++) { imagefilledrectangle($this->m_image, $sx + $marginx + $i * $w, $marginy + $height - $dy * ($series->m_values[$i] - $min), $sx + $marginx + $i * $w + $dx, $marginy + $height, $series->m_fillColor); imagerectangle($this->m_image, $sx + $marginx + $i * $w, $marginy + $height - $dy * ($series->m_values[$i] - $min), $sx + $marginx + $i * $w + $dx, $marginy + $height, IMG_COLOR_STYLED); } // IMPULS PLOT } else { if ($series->m_type == 'impuls') { _set_style($this->m_image, $series->m_style, $series->m_fillColor, $this->m_fillColor); for ($i = 0; $i < $cnt; $i++) { $x = $marginx + $i * $w + $dx / 2 + $sx; $y = $marginy + $height - $dy * ($series->m_values[$i] - $min); imageline($this->m_image, $x, $y, $x, $marginy + $height, IMG_COLOR_STYLED); } // STEP PLOT } else { if ($series->m_type == 'step') { _set_style($this->m_image, $series->m_style, $series->m_strokeColor, $this->m_fillColor); $cnt = $cnt; $vpoints = ''; $startx = $marginx + $sx / 2; $starty = $marginy + $height - $dy * ($series->m_values[0] - $min); $vpoints[] = $startx; $vpoints[] = $marginy + $height; $vpoints[] = $startx; $vpoints[] = $starty; for ($i = 1; $i < $cnt; $i++) { $x = $marginx + $i * $w + $sx / 2; $y = $marginy + $height - $dy * ($series->m_values[$i] - $min); $vpoints[] = $x; $vpoints[] = $starty; $vpoints[] = $x; $vpoints[] = $y; $startx = $x; $starty = $y; } $vpoints[] = $x + $w; $vpoints[] = $y; $vpoints[] = $x + $w; $vpoints[] = $marginy + $height; imagefilledpolygon($this->m_image, $vpoints, $cnt * 2 + 2, $series->m_fillColor); imagepolygon($this->m_image, $vpoints, $cnt * 2 + 2, IMG_COLOR_STYLED); // DOT PLOT } else { if ($series->m_type == 'dot') { _set_style($this->m_image, $series->m_style, $series->m_strokeColor, $this->m_fillColor); for ($i = 0; $i < $cnt; $i++) { $x = $marginx + $i * $w + $dx / 2 + $sx; $y = $marginy + $height - $dy * ($series->m_values[$i] - $min); imagerectangle($this->m_image, $x - 2, $y - 2, $x + 2, $y + 2, IMG_COLOR_STYLED); imagefilledrectangle($this->m_image, $x - 1, $y - 1, $x + 1, $y + 1, $series->m_fillColor); } } } } } } } } // plot X labels for ($i = 0; $i < count($this->m_labels); $i++) { $len = strlen($this->m_labels[$i]); if ($len > 0) { _set_style($this->m_image, $this->m_axisXStyle, $this->m_axisXColor, $this->m_fillColor); imageline($this->m_image, $dx / 2 + $sx + $marginx + $i * $w, $height + $marginy, $dx / 2 + $sx + $i * $w + $marginx, $height + $marginy + 3, IMG_COLOR_STYLED); if ($this->m_labelsDirection == HORIZONTAL) { imagestring($this->m_image, $this->m_labelsFont, $dx / 2 + $sx + $marginx + $i * $w - $len * $this->m_labelsFontWidth / 2, $marginy + 4 + $height, $this->m_labels[$i], $this->m_labelsTextColor); } else { imagestringup($this->m_image, $this->m_labelsFont, $dx / 2 + $sx + $marginx + $i * $w - $this->m_labelsFontHeight / 2, $marginy + $height + $len * $this->m_labelsFontWidth + 4, $this->m_labels[$i], $this->m_labelsTextColor); } } } // plot X axis if ($this->m_showXAxis) { _set_style($this->m_image, $this->m_axisXStyle, $this->m_axisXColor, $this->m_fillColor); imageline($this->m_image, $marginx, $marginy + $height, $marginx + $width, $marginy + $height, IMG_COLOR_STYLED); if ($this->m_axisXTitle) { imagestring($this->m_image, $this->m_axisXFont, $marginx + ($width - strlen($this->m_axisXTitle) * $this->m_axisXFontWidth) / 2, $this->m_height - $margin - $this->m_axisXFontHeight, $this->m_axisXTitle, $this->m_axisXColor); } } // plot Y axis if ($this->m_showYAxis) { _set_style($this->m_image, $this->m_axisYStyle, $this->m_axisYColor, $this->m_fillColor); imageline($this->m_image, $marginx, $marginy, $marginx, $marginy + $height, IMG_COLOR_STYLED); if ($this->m_axisYTitle) { $titlewidth = strlen($this->m_axisYTitle) * $this->m_axisYFontWidth; imagestringup($this->m_image, $this->m_axisYFont, $margin, $marginy + $titlewidth + ($height - $titlewidth) / 2, $this->m_axisYTitle, $this->m_axisYColor); } } $image_function = 'image' . osc_dynamic_image_extension(); if (strlen($file) > 0) { $image_function($this->m_image, $file); } else { $image_function($this->m_image); } }
function delete($id, $delete_image = false) { global $osC_Database; $error = false; $osC_Database->startTransaction(); if ($delete_image === true) { $Qimage = $osC_Database->query('select banners_image from :table_banners where banners_id = :banners_id'); $Qimage->bindTable(':table_banners', TABLE_BANNERS); $Qimage->bindInt(':banners_id', $id); $Qimage->execute(); $image = $Qimage->value('banners_image'); } $Qdelete = $osC_Database->query('delete from :table_banners where banners_id = :banners_id'); $Qdelete->bindTable(':table_banners', TABLE_BANNERS); $Qdelete->bindInt(':banners_id', $id); $Qdelete->setLogging($_SESSION['module'], $id); $Qdelete->execute(); if ($osC_Database->isError()) { $error = true; } if ($error === false) { $Qdelete = $osC_Database->query('delete from :table_banners_history where banners_id = :banners_id'); $Qdelete->bindTable(':table_banners_history', TABLE_BANNERS_HISTORY); $Qdelete->bindInt(':banners_id', $id); $Qdelete->execute(); if ($osC_Database->isError()) { $error = true; } } if ($error === false) { if ($delete_image === true && isset($image) && !empty($image)) { if (is_file('../images/' . $image) && is_writeable('../images/' . $image)) { @unlink('../images/' . $image); } } $image_extension = osc_dynamic_image_extension(); if (!empty($image_extension)) { if (is_file('images/graphs/banner_yearly-' . $id . '.' . $image_extension) && is_writeable('images/graphs/banner_yearly-' . $id . '.' . $image_extension)) { @unlink('images/graphs/banner_yearly-' . $id . '.' . $image_extension); } if (is_file('images/graphs/banner_monthly-' . $id . '.' . $image_extension) && is_writeable('images/graphs/banner_monthly-' . $id . '.' . $image_extension)) { @unlink('images/graphs/banner_monthly-' . $id . '.' . $image_extension); } if (is_file('images/graphs/banner_daily-' . $id . '.' . $image_extension) && is_writeable('images/graphs/banner_daily-' . $id . '.' . $image_extension)) { unlink('images/graphs/banner_daily-' . $id . '.' . $image_extension); } } $osC_Database->commitTransaction(); return true; } $osC_Database->rollbackTransaction(); return false; }
function __construct() { global $osC_Language, $osC_MessageStack; $this->_page_title = $osC_Language->get('heading_title'); if (!isset($_GET['action'])) { $_GET['action'] = ''; } if (!isset($_GET['page']) || isset($_GET['page']) && !is_numeric($_GET['page'])) { $_GET['page'] = 1; } $this->image_extension = osc_dynamic_image_extension(); // check if the graphs directory exists if (!empty($this->image_extension)) { if (is_dir('images/graphs')) { if (!is_writeable('images/graphs')) { $osC_MessageStack->add('header', sprintf($osC_Language->get('ms_error_graphs_directory_not_writable'), realpath('images/graphs')), 'error'); } } else { $osC_MessageStack->add('header', sprintf($osC_Language->get('ms_error_graphs_directory_non_existant'), realpath('images/graphs')), 'error'); } } if (!empty($_GET['action'])) { switch ($_GET['action']) { case 'preview': $this->_page_contents = 'preview.php'; break; case 'statistics': $this->_page_contents = 'statistics.php'; break; case 'save': if (isset($_GET['bID']) && is_numeric($_GET['bID'])) { $this->_page_contents = 'edit.php'; } else { $this->_page_contents = 'new.php'; } if (isset($_POST['subaction']) && $_POST['subaction'] == 'confirm') { $data = array('title' => $_POST['title'], 'url' => $_POST['url'], 'group' => isset($_POST['group']) ? $_POST['group'] : null, 'group_new' => $_POST['group_new'], 'image' => isset($_FILES['image']) ? $_FILES['image'] : null, 'image_local' => $_POST['image_local'], 'image_target' => $_POST['image_target'], 'html_text' => $_POST['html_text'], 'date_scheduled' => $_POST['date_scheduled'], 'date_expires' => $_POST['date_expires'], 'expires_impressions' => $_POST['expires_impressions'], 'status' => isset($_POST['status']) && $_POST['status'] == 'on' ? true : false); if (osC_BannerManager_Admin::save(isset($_GET['bID']) && is_numeric($_GET['bID']) ? $_GET['bID'] : null, $data)) { $osC_MessageStack->add($this->_module, $osC_Language->get('ms_success_action_performed'), 'success'); } else { $osC_MessageStack->add($this->_module, $osC_Language->get('ms_error_action_not_performed'), 'error'); } osc_redirect_admin(osc_href_link_admin(FILENAME_DEFAULT, $this->_module . '&page=' . $_GET['page'])); } break; case 'delete': $this->_page_contents = 'delete.php'; if (isset($_POST['subaction']) && $_POST['subaction'] == 'confirm') { if (osC_BannerManager_Admin::delete($_GET['bID'], isset($_POST['delete_image']) && $_POST['delete_image'] == 'on' ? true : false)) { $osC_MessageStack->add($this->_module, $osC_Language->get('ms_success_action_performed'), 'success'); } else { $osC_MessageStack->add($this->_module, $osC_Language->get('ms_error_action_not_performed'), 'error'); } osc_redirect_admin(osc_href_link_admin(FILENAME_DEFAULT, $this->_module . '&page=' . $_GET['page'])); } break; case 'batchDelete': if (isset($_POST['batch']) && is_array($_POST['batch']) && !empty($_POST['batch'])) { $this->_page_contents = 'batch_delete.php'; if (isset($_POST['subaction']) && $_POST['subaction'] == 'confirm') { $error = false; foreach ($_POST['batch'] as $id) { if (!osC_BannerManager_Admin::delete($id, isset($_POST['delete_image']) && $_POST['delete_image'] == 'on' ? true : false)) { $error = true; break; } } if ($error === false) { $osC_MessageStack->add($this->_module, $osC_Language->get('ms_success_action_performed'), 'success'); } else { $osC_MessageStack->add($this->_module, $osC_Language->get('ms_error_action_not_performed'), 'error'); } osc_redirect_admin(osc_href_link_admin(FILENAME_DEFAULT, $this->_module . '&page=' . $_GET['page'])); } } break; } } }