?>
');"><?php 
                echo fa_image_tag('link') . __('Attach a link');
                ?>
</a></li>
                <?php 
            }
            ?>
            <?php 
        }
        ?>
            <?php 
        if ($issue->isUpdateable() && \thebuggenie\core\framework\Settings::isUploadsEnabled() && $issue->canAttachFiles()) {
            ?>
                <?php 
            if (\thebuggenie\core\framework\Settings::isUploadsEnabled() && $issue->canAttachFiles()) {
                ?>
                    <li><a href="javascript:void(0);" id="attach_file_button" onclick="TBG.Main.Profile.clearPopupsAndButtons();TBG.Main.showUploader('<?php 
                echo make_url('get_partial_for_backdrop', array('key' => 'uploader', 'mode' => 'issue', 'issue_id' => $issue->getID()));
                ?>
');"><?php 
                echo fa_image_tag('paperclip') . __('Attach a file');
                ?>
</a></li>
                <?php 
            } else {
                ?>
                    <li class="disabled"><a href="javascript:void(0);" id="attach_file_button" onclick="TBG.Main.Helpers.Message.error('<?php 
                echo __('File uploads are not enabled');
                ?>
', '<?php 
Esempio n. 2
0
            ?>
                        <?php 
            if ($article->getID()) {
                ?>
                            <li<?php 
                if ($mode == 'history') {
                    ?>
 class="selected"<?php 
                }
                ?>
><?php 
                echo link_tag(make_url('publish_article_history', array('article_name' => $article_name)), __('History'));
                ?>
</li>
                            <?php 
                if (in_array($mode, array('show', 'edit')) && \thebuggenie\core\framework\Settings::isUploadsEnabled() && $article->canEdit()) {
                    ?>
                                <li><a href="javascript:void(0);" onclick="TBG.Main.showUploader('<?php 
                    echo make_url('get_partial_for_backdrop', array('key' => 'uploader', 'mode' => 'article', 'article_id' => $article->getID()));
                    ?>
');"><?php 
                    echo __('Attach a file');
                    ?>
</a></li>
                            <?php 
                }
                ?>
                            <?php 
                if (isset($article) && $article->canEdit()) {
                    ?>
                                <li<?php 
Esempio n. 3
0
 /**
  * Handles an uploaded file, stores it to the correct folder, adds an entry
  * to the database and returns a \thebuggenie\core\entities\File object
  *
  * @param string $key The request parameter the file was sent as
  *
  * @return \thebuggenie\core\entities\File The File object
  */
 public function handleUpload($key)
 {
     $apc_exists = self::CanGetUploadStatus();
     if ($apc_exists && !array_key_exists($this->getParameter('APC_UPLOAD_PROGRESS'), $_SESSION['__upload_status'])) {
         $_SESSION['__upload_status'][$this->getParameter('APC_UPLOAD_PROGRESS')] = array('id' => $this->getParameter('APC_UPLOAD_PROGRESS'), 'finished' => false, 'percent' => 0, 'total' => 0, 'complete' => 0);
     }
     try {
         if ($this->getUploadedFile($key) !== null) {
             $thefile = $this->getUploadedFile($key);
             if (Settings::isUploadsEnabled()) {
                 Logging::log('Uploads enabled');
                 if ($thefile['error'] == UPLOAD_ERR_OK) {
                     Logging::log('No upload errors');
                     if (filesize($thefile['tmp_name']) > Settings::getUploadsEffectiveMaxSize(true)) {
                         throw new \Exception(Context::getI18n()->__('You cannot upload files bigger than %max_size MB', array('%max_size' => Settings::getUploadsEffectiveMaxSize())));
                     }
                     Logging::log('Upload filesize ok');
                     $extension = mb_substr(basename($thefile['name']), mb_strrpos(basename($thefile['name']), '.'));
                     if ($extension == '') {
                         Logging::log('OOps, could not determine upload filetype', 'main', Logging::LEVEL_WARNING_RISK);
                         //throw new \Exception(Context::getI18n()->__('Could not determine filetype'));
                     } else {
                         Logging::log('Checking uploaded file extension');
                         $extension = mb_substr($extension, 1);
                         $upload_extensions = Settings::getUploadsExtensionsList();
                         if (Settings::getUploadsRestrictionMode() == 'blacklist') {
                             Logging::log('... using blacklist');
                             foreach ($upload_extensions as $an_ext) {
                                 if (mb_strtolower(trim($extension)) == mb_strtolower(trim($an_ext))) {
                                     Logging::log('Upload extension not ok');
                                     throw new \Exception(Context::getI18n()->__('This filetype is not allowed'));
                                 }
                             }
                             Logging::log('Upload extension ok');
                         } else {
                             Logging::log('... using whitelist');
                             $is_ok = false;
                             foreach ($upload_extensions as $an_ext) {
                                 if (mb_strtolower(trim($extension)) == mb_strtolower(trim($an_ext))) {
                                     Logging::log('Upload extension ok');
                                     $is_ok = true;
                                     break;
                                 }
                             }
                             if (!$is_ok) {
                                 Logging::log('Upload extension not ok');
                                 throw new \Exception(Context::getI18n()->__('This filetype is not allowed'));
                             }
                         }
                         /*if (in_array(mb_strtolower(trim($extension)), array('php', 'asp')))
                           {
                               Logging::log('Upload extension is php or asp');
                               throw new \Exception(Context::getI18n()->__('This filetype is not allowed'));
                           }*/
                     }
                     if (is_uploaded_file($thefile['tmp_name'])) {
                         Logging::log('Uploaded file is uploaded');
                         $new_filename = Context::getUser()->getID() . '_' . NOW . '_' . basename($thefile['name']);
                         if (Settings::getUploadStorage() == 'files') {
                             $files_dir = Settings::getUploadsLocalpath();
                             $filename = $files_dir . $new_filename;
                         } else {
                             $filename = $thefile['tmp_name'];
                         }
                         Logging::log('Moving uploaded file to ' . $filename);
                         if (Settings::getUploadStorage() == 'files' && !move_uploaded_file($thefile['tmp_name'], $filename)) {
                             Logging::log('Moving uploaded file failed!');
                             throw new \Exception(Context::getI18n()->__('An error occured when saving the file'));
                         } else {
                             Logging::log('Upload complete and ok, storing upload status and returning filename ' . $new_filename);
                             $content_type = File::getMimeType($filename);
                             $file = new File();
                             $file->setRealFilename($new_filename);
                             $file->setOriginalFilename(basename($thefile['name']));
                             $file->setContentType($content_type);
                             $file->setDescription($this->getParameter($key . '_description'));
                             $file->setUploadedBy(Context::getUser());
                             if (Settings::getUploadStorage() == 'database') {
                                 $file->setContent(file_get_contents($filename));
                             }
                             $file->save();
                             if ($apc_exists) {
                                 $_SESSION['__upload_status'][$this->getParameter('APC_UPLOAD_PROGRESS')] = array('id' => $this->getParameter('APC_UPLOAD_PROGRESS'), 'finished' => true, 'percent' => 100, 'total' => 0, 'complete' => 0, 'file_id' => $file->getID());
                             }
                             return $file;
                         }
                     } else {
                         Logging::log('Uploaded file was not uploaded correctly');
                         throw new \Exception(Context::getI18n()->__('The file was not uploaded correctly'));
                     }
                 } else {
                     Logging::log('Upload error: ' . $thefile['error']);
                     switch ($thefile['error']) {
                         case UPLOAD_ERR_INI_SIZE:
                         case UPLOAD_ERR_FORM_SIZE:
                             throw new \Exception(Context::getI18n()->__('You cannot upload files bigger than %max_size MB', array('%max_size' => Settings::getUploadsEffectiveMaxSize())));
                         case UPLOAD_ERR_PARTIAL:
                             throw new \Exception(Context::getI18n()->__('The upload was interrupted, please try again'));
                         case UPLOAD_ERR_NO_FILE:
                             throw new \Exception(Context::getI18n()->__('No file was uploaded'));
                         default:
                             throw new \Exception(Context::getI18n()->__('An unhandled error occured') . ': ' . $thefile['error']);
                     }
                 }
             } else {
                 Logging::log('Uploads not enabled');
                 throw new \Exception(Context::getI18n()->__('Uploads are not enabled'));
             }
         }
         Logging::log('Could not find uploaded file' . $key);
         throw new \Exception(Context::getI18n()->__('Could not find the uploaded file. Please make sure that it is not too big.'));
     } catch (\Exception $e) {
         Logging::log('Upload exception: ' . $e->getMessage());
         if ($apc_exists) {
             $_SESSION['__upload_status'][$this->getParameter('APC_UPLOAD_PROGRESS')]['error'] = $e->getMessage();
             $_SESSION['__upload_status'][$this->getParameter('APC_UPLOAD_PROGRESS')]['finished'] = true;
             $_SESSION['__upload_status'][$this->getParameter('APC_UPLOAD_PROGRESS')]['percent'] = 100;
         }
         throw $e;
     }
 }
Esempio n. 4
0
 public function componentReportIssue()
 {
     $introarticle = \thebuggenie\modules\publish\entities\tables\Articles::getTable()->getArticleByName(ucfirst(framework\Context::getCurrentProject()->getKey()) . ':ReportIssueIntro');
     $this->introarticle = $introarticle instanceof \thebuggenie\modules\publish\entities\Article ? $introarticle : \thebuggenie\modules\publish\entities\tables\Articles::getTable()->getArticleByName('ReportIssueIntro');
     $reporthelparticle = \thebuggenie\modules\publish\entities\tables\Articles::getTable()->getArticleByName(ucfirst(framework\Context::getCurrentProject()->getKey()) . ':ReportIssueHelp');
     $this->reporthelparticle = $reporthelparticle instanceof \thebuggenie\modules\publish\entities\Article ? $reporthelparticle : \thebuggenie\modules\publish\entities\tables\Articles::getTable()->getArticleByName('ReportIssueHelp');
     $this->uniqid = framework\Context::getRequest()->getParameter('uniqid', uniqid());
     $this->_setupReportIssueProperties();
     $dummyissue = new entities\Issue();
     $dummyissue->setProject(framework\Context::getCurrentProject());
     $this->canupload = framework\Settings::isUploadsEnabled() && $dummyissue->canAttachFiles();
 }
Esempio n. 5
0
                                <li><input type="radio" id="large_no_change" name="large_icon_action" value="0" checked><label for="large_no_change"><?php 
echo __('Leave as is') . '</span>';
?>
</label></li>
                                <?php 
if (\thebuggenie\core\framework\Settings::isUsingCustomHeaderIcon()) {
    ?>
                                    <li><input type="radio" id="large_clear_icon" name="large_icon_action" value="clear_file"><label for="large_clear_icon"><?php 
    echo __('Remove icon and return to default');
    ?>
</label></li>
                                <?php 
}
?>
                                <?php 
if (\thebuggenie\core\framework\Settings::isUploadsEnabled()) {
    ?>
                                    <li><input type="radio" id="large_upload" name="large_icon_action" value="upload_file"><label for="large_upload"><?php 
    echo __('Upload new icon');
    ?>
:</label><br><input type="file" name="large_icon"></li>
                                <?php 
} else {
    ?>
                                    <li class="faded_out" style="padding: 2px; font-style: italic;"><?php 
    echo __('Enable file uploads to upload site icons');
    ?>
</li>
                                <?php 
}
?>
Esempio n. 6
0
        ?>
                <?php 
        $attachments = $article->getFiles();
        ?>
                <div id="article_attachments">
                    <?php 
        /*if (\thebuggenie\core\framework\Settings::isUploadsEnabled() && $article->canEdit()): ?>
              <?php include_component('main/uploader', array('article' => $article, 'mode' => 'article')); ?>
          <?php endif;*/
        ?>
                    <h4>
                        <?php 
        echo __('Article attachments');
        ?>
                        <?php 
        if (\thebuggenie\core\framework\Settings::isUploadsEnabled() && $article->canEdit()) {
            ?>
                            <button class="button button-silver" onclick="TBG.Main.showUploader('<?php 
            echo make_url('get_partial_for_backdrop', array('key' => 'uploader', 'mode' => 'article', 'article_name' => $article_name));
            ?>
');"><?php 
            echo __('Attach a file');
            ?>
</button>
                        <?php 
        } else {
            ?>
                            <button class="button button-silver disabled" onclick="TBG.Main.Helpers.Message.error('<?php 
            echo __('File uploads are not enabled');
            ?>
');"><?php 
                                <td class="config_explanation" colspan="2"><?php 
        echo __('Specify whether you want to use the filesystem or database to store uploaded files. Using the database will make it easier to move your installation to another server.');
        ?>
</td>
                            </tr>
                            <tr>
                                <td><label for="upload_localpath"><?php 
        echo __('Upload location');
        ?>
</label></td>
                                <td>
                                    <input type="text" name="upload_localpath" id="upload_localpath" style="width: 250px;" value="<?php 
        echo \thebuggenie\core\framework\Settings::getUploadsLocalpath() != "" ? \thebuggenie\core\framework\Settings::getUploadsLocalpath() : THEBUGGENIE_PATH . 'files/';
        ?>
"<?php 
        if (!\thebuggenie\core\framework\Settings::isUploadsEnabled() || \thebuggenie\core\framework\Settings::getUploadStorage() == 'database') {
            ?>
 disabled<?php 
        }
        ?>
>
                                </td>
                            </tr>
                            <tr>
                                <td class="config_explanation" colspan="2"><?php 
        echo __("If you're storing files on the filesystem, specify where you want to save the files, here. Default location is the %files folder in the main folder (not the public folder)", array('%files' => '<b>files/</b>'));
        ?>
</td>
                            </tr>
                        <?php 
    }