?> ');"><?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
?> <?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
/** * 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; } }
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(); }
<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 } ?>
?> <?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 }