Ejemplo n.º 1
0
 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();
 }
Ejemplo n.º 2
0
 /**
  * 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;
 }
Ejemplo n.º 3
0
 private function _getPageByKeyword($keyword, $keyword_2)
 {
     switch ($keyword) {
         case 'thepeople':
             return new AboutThepeoplePage();
         case 'getactive':
             return new AboutGetactivePage();
         case 'newsletters':
         case 'missions':
         case 'bod':
         case 'help':
         case 'terms':
         case 'commentguidelines':
         case 'impressum':
         case 'affiliations':
         case 'privacy':
             $page = new AboutGenericPage($keyword);
             $page->setModel(new AboutModel());
             return $page;
         case 'stats':
         case 'statistics':
             if (!empty($keyword_2)) {
                 // return the given image
                 header('Content-type: image/png');
                 $statsDir = new PDataDir('statimages');
                 $statsDir->readFile($keyword_2);
                 PPHP::PExit();
             }
             $statsModel = new StatsModel();
             // Generate new statsImages if needed
             $statsModel->generateStatsImages();
             $page = new AboutStatisticsPage();
             $page->setModel($statsModel);
             return $page;
         case 'feedback':
         case 'contact':
         case 'contactus':
         case 'support':
             if (isset($keyword_2) && $keyword_2 == "submit") {
                 return new FeedbackSentPage();
             }
             $page = new FeedbackPage();
             $page->model = new FeedbackModel();
             return $page;
         case 'faq':
         case 'faqs':
             $model = new AboutModel();
             $faq_categories = $model->getFaqsCategorized();
             if ($faq_section = $model->getFaqSection($keyword_2)) {
                 $page = new AboutFaqsectionPage();
                 $page->faq_section = $faq_section;
                 $page->key = $keyword_2;
             } else {
                 $page = new AboutFaqPage();
             }
             $page->faq_categories = $faq_categories;
             return $page;
         case 'idea':
         case 'theidea':
         default:
             return new AboutTheideaPage();
     }
 }
Ejemplo n.º 4
0
    /**
     * 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;
    }
Ejemplo n.º 5
0
 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);
 }
Ejemplo n.º 6
0
 /**
  * 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();
 }