public function thumbImg($id) { if (!($d = $this->_model->imageData($id))) { PPHP::PExit(); } $tmpDir = new PDataDir('gallery/user' . $d->user_id_foreign); if (isset($_GET['t'])) { $thumbFile = 'thumb' . (int) $_GET['t'] . $d->file; } else { $thumbFile = 'thumb' . $d->file; } if (!$tmpDir->fileExists($thumbFile)) { $thumbFile = $d->file; } if (!$tmpDir->fileExists($thumbFile) || $tmpDir->file_Size($thumbFile) == 0) { $tmpDir = new PDataDir('gallery'); $thumbFile = 'nopic.gif'; $d->mimetype = 'image/gif'; } header('Content-type: ' . $d->mimetype); $tmpDir->readFile($thumbFile); PPHP::PExit(); }
/** * 100x100 avatar picture for forums etc * * @param string $username * */ public static function smallUserPic_userId($userId) { //first of all, check if a pic in the new data folder is available $avatarDir = new PDataDir('user/avatars'); if ($avatarDir->fileExists((int) $userId . '_xs')) { return 'members/avatar/' . $userId . '/?xs'; } $picfile = self::userPic_userId($userId); $thumbfile = self::_getThumb($picfile, 100, 100, 100); return $thumbfile; }
/** * processing image uploads * * @todo sizes should be customizable */ public function uploadProcess(&$vars) { // NEW CHECKS if (!($member = $this->getLoggedInMember())) { $vars['error'] = 'Gallery_NotLoggedIn'; return false; } if (!isset($_FILES['gallery-file']) || !is_array($_FILES['gallery-file']) || count($_FILES['gallery-file']) == 0) { $vars['error'] = 'Gallery_UploadError'; return false; } $noError = true; // flag for error on one file $userDir = new PDataDir('gallery/user' . $member->get_userid()); $insert = $this->dao->prepare(' INSERT INTO `gallery_items` (`id`, `user_id_foreign`, `file`, `original`, `flags`, `mimetype`, `width`, `height`, `title`, `created`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, NOW()) '); $itemId = false; $insert->bindParam(0, $itemId); $userId = $member->get_userid(); $insert->bindParam(1, $userId); $hash = false; $insert->bindParam(2, $hash); $orig = false; $insert->bindParam(3, $orig); $flags = 0; $insert->bindParam(4, $flags); $mimetype = false; $insert->bindParam(5, $mimetype); $width = false; $insert->bindParam(6, $width); $height = false; $insert->bindParam(7, $height); $title = false; $insert->bindParam(8, $title); foreach ($_FILES['gallery-file']['error'] as $key => $error) { $fileName = $_FILES['gallery-file']['name'][$key]; // if upload failed, set error message if (!empty($fileName) && $error != UPLOAD_ERR_OK) { $noError = false; switch ($error) { case UPLOAD_ERR_INI_SIZE: case UPLOAD_ERR_FORM_SIZE: $vars['fileErrors'][$fileName] = 'Gallery_UploadFileTooLarge'; break; default: $vars['fileErrors'][$fileName] = 'Gallery_UploadError'; break; } } elseif (!empty($fileName)) { // upload succeeded -> check if image $img = new MOD_images_Image($_FILES['gallery-file']['tmp_name'][$key]); if (!$img->isImage()) { $noError = false; $vars['fileErrors'][$fileName] = 'Gallery_UploadNotImage'; } else { // upload is image // resize $size = $img->getImageSize(); $original_x = min($size[0], PVars::getObj('images')->max_width); $original_y = min($size[1], PVars::getObj('images')->max_height); $tempDir = dirname($_FILES['gallery-file']['tmp_name'][$key]); $resizedName = md5($_FILES['gallery-file']['tmp_name'][$key]) . '_resized'; $img->createThumb($tempDir, $resizedName, $original_x, $original_y, true, 'ratio'); $tempFile = $tempDir . '/' . $resizedName; // create new image object from resized image $img = new MOD_images_Image($tempFile); $size = $img->getImageSize(); $type = $size[2]; $hash = $img->getHash(); if ($userDir->fileExists($hash)) { continue; } if (!$userDir->copyTo($tempFile, $hash)) { continue; } if (!($result = $this->createThumbnails($userDir, $img))) { return false; } $itemId = $this->dao->nextId('gallery_items'); $orig = $_FILES['gallery-file']['name'][$key]; $mimetype = image_type_to_mime_type($type); $width = $size[0]; $height = $size[1]; $title = $orig; try { $insert->execute(); } catch (PException $e) { error_log($e->__toString()); } if ($vars['galleryId']) { $this->dao->exec("INSERT INTO `gallery_items_to_gallery` SET `gallery_id_foreign` = '" . $vars['galleryId'] . "', `item_id_foreign`= " . $itemId); } $vars['fileErrors'][$_FILES['gallery-file']['name'][$key]] = 'Gallery_UploadFileSuccessfule'; unlink($tempFile); } } } return $noError; }
public function generateStatsImages() { $statsDir = new PDataDir('statimages'); $statsdir = $statsDir->dirName() . "/"; $statsfile = "laststats.txt"; if ($statsDir->fileExists($statsfile)) { $stats = fopen($statsdir . $statsfile, "r"); $dateLine = fgets($stats); if ($dateLine == date('Y-m-d')) { return; } } $countryrank = $this->getMembersPerCountry(); $loginrank = $this->getLastLoginRank(); $loginrankgrouped = $this->getLastLoginRankGrouped(); $statsall = $this->getStatsLogAll(); $statslast = $this->getStatsLog2Month(); $languages = $this->getLanguages(); $preferredLanguages = $this->getPreferredLanguages(); // get number of members per country $i = 0; foreach ($countryrank as $key => $val) { $country[$i] = $key; $countrycnt[$i] = $val; $i++; } // get last login grouped by time $i = 0; foreach ($loginrankgrouped as $key => $val) { $lastlogingrouped[$i] = $key; $lastlogingroupedcnt[$i] = $val; $i++; } // get login rank $i = 0; foreach ($loginrank as $key => $val) { $lastlogin[$i] = "\"" . $key . "\""; $lastlogincnt[$i] = "[" . $key . "," . $val . "]"; $i++; } // get all values from stats table $i = 0; $labelsAllTime = $membersAllTime = $newMembersAllTime = $newMembersPercentAllTime = $membersLoggedInAllTime = $membersLoggedInPercentAllTime = $memberWithPositiveCommentsAllTime = $messageSentAllTime = $messageReadAllTime = array(); foreach ($statsall as $val) { $membersAllTime[$i] = $val->NbActiveMembers; $yearweek = strtotime(substr($val->week, 0, 4) . "-W" . substr($val->week, 4, 2) . "-1"); // echo $yearweek . ": " . date( "Y-m-d", $yearweek) . "<br />"; $labelsAllTime[] = date("Y-m-d", $yearweek); if ($i == 0) { $newMembersAllTime[$i] = 0; } else { $newMembersAllTime[$i] = $membersAllTime[$i] - $membersAllTime[$i - 1]; } if ($i == 0) { $newMembersPercentAllTime[$i] = 0; } else { if ($membersAllTime[$i] == 0) { $newMembersPercentAllTime[$i] = 0; } else { $newMembersPercentAllTime[$i] = $newMembersAllTime[$i] / $membersAllTime[$i] * 100; } } $messageSentAllTime[$i] = $val->NbMessageSent; $membersWithPositiveCommentsAllTime[$i] = $val->NbMemberWithOneTrust; $membersLoggedInAllTime[$i] = $val->NbMemberWhoLoggedToday; if ($membersAllTime[$i] == 0) { $membersLoggedInPercentAllTime[$i] = 0; } else { $membersLoggedInPercentAllTime[$i] = $membersLoggedInAllTime[$i] / $membersAllTime[$i] * 100; } $i++; } // get all values from stats table (last 2 months) $i = 0; $labelsLast2Month = $membersLast2Month = $newMembersLast2Month = $membersPercentLast2Month = $membersLoggedInLast2Month = $membersLoggedInPercentLast2Month = $memberWithPositiveCommentsLast2Month = $messageSentLast2Month = $messageReadLast2Month = array(); foreach ($statslast as $val) { $membersLast2Month[$i] = $val->NbActiveMembers; if ($i == 0) { $newMembersLast2Month[0] = 0; } else { $newMembersLast2Month[$i] = $membersLast2Month[$i] - $membersLast2Month[$i - 1]; } $labelsLast2Month[] = date("Y-m-d", strtotime("-" . (60 - $i) . "days")); if ($i == 0) { $newMembersPercentLast2Month[$i] = 0; } else { if ($membersLast2Month[$i - 1] == 0) { $newMembersPercentLast2Month[$i] = 0; } else { $newMembersPercentLast2Month[$i] = $newMembersLast2Month[$i] / $membersLast2Month[$i - 1] * 100; } } $messageSentLast2Month[$i] = $val->NbMessageSent; $membersWithPositiveCommentsLast2Month[$i] = $val->NbMemberWithOneTrust; $membersLoggedInLast2Month[$i] = $val->NbMemberWhoLoggedToday; if ($membersLast2Month[$i] == 0) { $membersLoggedInPercentLast2Month[$i] = 0; } else { $membersLoggedInPercentLast2Month[$i] = $membersLoggedInLast2Month[$i] / $membersLast2Month[$i] * 100; } $i++; } $this->drawCharts($statsdir . 'allmembers', 'Members', $membersAllTime, $labelsAllTime, $membersLast2Month, $labelsLast2Month); $this->drawCharts($statsdir . 'newmembers', 'Members', $newMembersAllTime, $labelsAllTime, $newMembersLast2Month, $labelsLast2Month); $this->drawCharts($statsdir . 'percentmembers', '% members', $newMembersPercentAllTime, $labelsAllTime, $newMembersPercentLast2Month, $labelsLast2Month); $this->drawCharts($statsdir . 'login', 'Members', $membersLoggedInAllTime, $labelsAllTime, $membersLoggedInLast2Month, $labelsLast2Month); $this->drawCharts($statsdir . 'percentlogin', '% members', $membersLoggedInPercentAllTime, $labelsAllTime, $membersLoggedInPercentLast2Month, $labelsLast2Month); $this->drawCharts($statsdir . 'trust', 'Members', $membersWithPositiveCommentsAllTime, $labelsAllTime, $membersWithPositiveCommentsLast2Month, $labelsLast2Month); $this->drawCharts($statsdir . 'messages', 'Messages', $messageSentAllTime, $labelsAllTime, $messageSentLast2Month, $labelsLast2Month); $this->drawPieChart($statsdir . 'loginpie', $lastlogingroupedcnt, $lastlogingrouped); $this->drawPieChart($statsdir . 'countrypie', $countrycnt, $country); $this->drawBarChart($statsdir . 'languagepie', 'Members', $languages, array_keys($languages)); $this->drawPieChart($statsdir . 'preferredlanguagepie', $preferredLanguages, array_keys($preferredLanguages)); $stats = fopen($statsdir . $statsfile, "w"); fwrite($stats, date('Y-m-d')); fclose($stats); }
/** * sends headers, reads out an image and then exits * * @param int $id - id of group to get thumbnail for * @access public */ public function realImg($id) { if (!($group = $this->createEntity('Group')->findById($id)) || !$group->Picture) { PPHP::PExit(); } $dir = new PDataDir('groups'); if (!$dir->fileExists($group->Picture) || $dir->file_Size($group->Picture) == 0) { PPHP::PExit(); } $img = new MOD_images_Image($dir->dirName() . '/' . $group->Picture); header('Content-type: ' . $img->getMimetype()); $dir->readFile($group->Picture); PPHP::PExit(); }