/** * Saves the uploaded file and returns the file info. * * @return stdClass * @throws Exception */ public function uploadFile() { try { $uploadManager = new Upload(); $uploadedFiles = $uploadManager->uploadFiles($_FILES); } catch (Exception $e) { // Log::doLog( $e->getMessage() ); throw new Exception($e->getMessage(), -8); } return $this->file = $uploadedFiles; }
/** * Upload new topic icon, replaces previous icon if one exists * * @param string $tid ID of topic to prepend to filename * @return string filename of new photo (empty = no new photo) */ function handleIconUpload($tid) { global $_CONF, $_TABLES, $LANG27; $upload = new Upload(); if (!empty($_CONF['image_lib'])) { if ($_CONF['image_lib'] == 'imagemagick') { // Using imagemagick $upload->setMogrifyPath($_CONF['path_to_mogrify']); } elseif ($_CONF['image_lib'] == 'netpbm') { // using netPBM $upload->setNetPBM($_CONF['path_to_netpbm']); } elseif ($_CONF['image_lib'] == 'gdlib') { // using the GD library $upload->setGDLib(); } $upload->setAutomaticResize(true); if (isset($_CONF['debug_image_upload']) && $_CONF['debug_image_upload']) { $upload->setLogFile($_CONF['path'] . 'logs/error.log'); $upload->setDebug(true); } if (isset($_CONF['jpeg_quality'])) { $upload->setJpegQuality($_CONF['jpeg_quality']); } } $upload->setAllowedMimeTypes(array('image/gif' => '.gif', 'image/jpeg' => '.jpg,.jpeg', 'image/pjpeg' => '.jpg,.jpeg', 'image/x-png' => '.png', 'image/png' => '.png')); if (!$upload->setPath($_CONF['path_images'] . 'topics')) { $display = COM_showMessageText($upload->printErrors(false), $LANG27[29]); $display = COM_createHTMLDocument($display, array('pagetitle' => $LANG27[29])); COM_output($display); exit; // don't return } $filename = ''; // see if user wants to upload a (new) icon $newIcon = $_FILES['newicon']; if (!empty($newIcon['name'])) { $pos = strrpos($newIcon['name'], '.') + 1; $fExtension = substr($newIcon['name'], $pos); $filename = 'topic_' . $tid . '.' . $fExtension; } // do the upload if (!empty($filename)) { $upload->setFileNames($filename); $upload->setPerms('0644'); if ($_CONF['max_topicicon_width'] > 0 && $_CONF['max_topicicon_height'] > 0) { $upload->setMaxDimensions($_CONF['max_topicicon_width'], $_CONF['max_topicicon_height']); } else { $upload->setMaxDimensions($_CONF['max_image_width'], $_CONF['max_image_height']); } if ($_CONF['max_topicicon_size'] > 0) { $upload->setMaxFileSize($_CONF['max_topicicon_size']); } else { $upload->setMaxFileSize($_CONF['max_image_size']); } $upload->uploadFiles(); if ($upload->areErrors()) { $display = COM_showMessageText($upload->printErrors(false), $LANG27[29]); $display = COM_createHTMLDocument($display, array('pagetitle' => $LANG27[29])); COM_output($display); exit; // don't return } if (strpos($_CONF['path_images'], $_CONF['path_html']) === 0) { $filename = substr($_CONF['path_images'], strlen($_CONF['path_html']) - 1) . 'topics/' . $filename; } else { /** * Not really used when the 'path_images' is outside of the webroot. * Let's at least extract the name of the images directory then. */ $images = 'images'; $parts = explode('/', $_CONF['path_images']); if (count($parts) > 1) { $cnt = count($parts); // e.g. from /path/to/myimages/ would extract "myimages" if (empty($parts[$cnt - 1]) && !empty($parts[$cnt - 2])) { $images = $parts[$cnt - 2]; } $filename = '/' . $images . '/topics/' . $filename; } } } return $filename; }
public function copyFiles($settings, $gid) { //Допустимые типы $validTypes = array('image/jpg', 'image/jpeg', 'image/gif', 'image/wbmp'); //Поле с которого происходит выбор файлов Upload::$index = 'images'; //Максимальный размер в кб Upload::$size = 15000; //Передача типов в класс Upload::validType($validTypes); //Проверка валидности файлов $files = Upload::validate(); //Загрузка во временную директорию $result = Upload::uploadFiles($files, 'tmp', true); Bufer::add(array('result' => $result)); $dir_galery_pic = 'uploads/images/galery/' . $gid . '/pic'; $dir_galery_thumb = 'uploads/images/galery/' . $gid . '/thumb'; //Если есть файлы, прошедшие проверку if (!empty($result['valid'])) { foreach ($result['valid'] as $file) { $image = $file['hashname'] . '.' . $file['ext']; $preview_w = $settings['preview_w']; $preview_h = $settings['preview_h']; $quality = isset($settings['quality']) ? $settings['quality'] : 100; $imageInfo = getimagesize($file['fullpath'], $quality); $img = new Images($file['fullpath']); $resizeThumb = $img->resize($preview_w, $preview_h, $dir_galery_thumb, $image); $width = isset($settings['resize_w']) ? $settings['resize_w'] : $imageInfo[0]; $height = isset($settings['resize_h']) ? $settings['resize_h'] : $imageInfo[1]; $img = new Images($file['fullpath']); $resizeBig = $img->resize($width, $height, $dir_galery_pic, $image); if (isset($settings['watermark_text'])) { $alfa = $settings['water_set']['fontAlpha']; $position = $settings['water_set']['position']; $align = $settings['water_set']['align']; $font = $settings['water_set']['fontFamily']; $size = $settings['water_set']['fontSize']; $color = $settings['water_set']['fontColor']; $margin = $settings['water_set']['margin']; $text = $settings['watermark_text']; $img = new Images($dir_galery_pic . '/' . $image); $img->waterSettings(array('fontAlpha' => $alfa, 'fontSize' => $size, 'fontFamily' => $font, 'fontColor' => $color, 'position' => $position, 'align' => $align, 'margin' => 10)); $arrInfo = $img->waterMarkText($text, $dir_galery_pic, false); } if (isset($settings['watermark_image'])) { $alfa = $settings['water_set']['imgAlpha']; $position = $settings['water_set']['position']; $align = $settings['water_set']['align']; $margin = $settings['water_set']['margin']; $image = $settings['watermark_image']; $img = new Images($dir_galery_pic . '/' . $image); $img->waterSettings(array('imgAlpha' => $alfa, 'position' => $position, 'align' => $align, 'margin' => 10)); $arrInfo = $img->waterMarkImg($image, $dir_galery, false); } $images[] = array('pic' => $dir_galery_pic . '/' . $image, 'thumb' => $dir_galery_thumb . '/' . $image); Upload::deleteFile($file['fullpath']); } } if (isset($images) && isset($gid)) { $result = $this->addImagesOnDb($gid, $images); } }
/** * Submit a new or updated story. The story is updated if it exists, or a new one is created * * @param array args Contains all the data provided by the client * @param string &output OUTPUT parameter containing the returned text * @return int Response code as defined in lib-plugins.php */ function service_submit_story($args, &$output, &$svc_msg) { global $_CONF, $_TABLES, $_USER, $LANG24, $MESSAGE, $_GROUPS; if (!SEC_hasRights('story.edit')) { $output .= COM_showMessageText($MESSAGE[29], $MESSAGE[30]); $output = COM_createHTMLDocument($output, array('pagetitle' => $MESSAGE[30])); return PLG_RET_AUTH_FAILED; } require_once $_CONF['path_system'] . 'lib-comment.php'; if (!$_CONF['disable_webservices']) { require_once $_CONF['path_system'] . 'lib-webservices.php'; } $gl_edit = false; if (isset($args['gl_edit'])) { $gl_edit = $args['gl_edit']; } if ($gl_edit) { /* This is EDIT mode, so there should be an old sid */ if (empty($args['old_sid'])) { if (!empty($args['id'])) { $args['old_sid'] = $args['id']; } else { return PLG_RET_ERROR; } if (empty($args['sid'])) { $args['sid'] = $args['old_sid']; } } } else { if (empty($args['sid']) && !empty($args['id'])) { $args['sid'] = $args['id']; } } // Store the first CATEGORY as the Topic ID if (!empty($args['category'][0])) { $args['tid'] = $args['category'][0]; } $content = ''; if (!empty($args['content'])) { $content = $args['content']; } else { if (!empty($args['summary'])) { $content = $args['summary']; } } if (!empty($content)) { $parts = explode('[page_break]', $content); if (count($parts) == 1) { $args['introtext'] = $content; $args['bodytext'] = ''; } else { $args['introtext'] = array_shift($parts); $args['bodytext'] = implode('[page_break]', $parts); } } // Apply filters to the parameters passed by the webservice if ($args['gl_svc']) { if (isset($args['mode'])) { $args['mode'] = COM_applyBasicFilter($args['mode']); } if (isset($args['editopt'])) { $args['editopt'] = COM_applyBasicFilter($args['editopt']); } } // - START: Set all the defaults - /* if (empty($args['tid'])) { // see if we have a default topic $topic = DB_getItem($_TABLES['topics'], 'tid', 'is_default = 1' . COM_getPermSQL('AND')); if (!empty($topic)) { $args['tid'] = $topic; } else { // otherwise, just use the first one $o = array(); $s = array(); if (service_getTopicList_story(array('gl_svc' => true), $o, $s) == PLG_RET_OK) { $args['tid'] = $o[0]; } else { $svc_msg['error_desc'] = 'No topics available'; return PLG_RET_ERROR; } } } */ /* This is a solution for above but the above has issues if (!TOPIC_checkTopicSelectionControl()) { $svc_msg['error_desc'] = 'No topics selected or available'; return PLG_RET_ERROR; } */ if (empty($args['owner_id'])) { $args['owner_id'] = $_USER['uid']; } if (empty($args['group_id'])) { $args['group_id'] = SEC_getFeatureGroup('story.edit', $_USER['uid']); } if (empty($args['postmode'])) { $args['postmode'] = $_CONF['postmode']; if (!empty($args['content_type'])) { if ($args['content_type'] == 'text') { $args['postmode'] = 'text'; } else { if ($args['content_type'] == 'html' || $args['content_type'] == 'xhtml') { $args['postmode'] = 'html'; } } } } if ($args['gl_svc']) { // Permissions if (!isset($args['perm_owner'])) { $args['perm_owner'] = $_CONF['default_permissions_story'][0]; } else { $args['perm_owner'] = COM_applyBasicFilter($args['perm_owner'], true); } if (!isset($args['perm_group'])) { $args['perm_group'] = $_CONF['default_permissions_story'][1]; } else { $args['perm_group'] = COM_applyBasicFilter($args['perm_group'], true); } if (!isset($args['perm_members'])) { $args['perm_members'] = $_CONF['default_permissions_story'][2]; } else { $args['perm_members'] = COM_applyBasicFilter($args['perm_members'], true); } if (!isset($args['perm_anon'])) { $args['perm_anon'] = $_CONF['default_permissions_story'][3]; } else { $args['perm_anon'] = COM_applyBasicFilter($args['perm_anon'], true); } if (!isset($args['draft_flag'])) { $args['draft_flag'] = $_CONF['draft_flag']; } if (empty($args['frontpage'])) { $args['frontpage'] = $_CONF['frontpage']; } if (empty($args['show_topic_icon'])) { $args['show_topic_icon'] = $_CONF['show_topic_icon']; } } // - END: Set all the defaults - // TEST CODE /* foreach ($args as $k => $v) { if (!is_array($v)) { echo "$k => $v\r\n"; } else { echo "$k => $v\r\n"; foreach ($v as $k1 => $v1) { echo " $k1 => $v1\r\n"; } } }*/ // exit (); // END TEST CODE if (!isset($args['sid'])) { $args['sid'] = ''; } $args['sid'] = COM_sanitizeID($args['sid']); if (!$gl_edit) { if (strlen($args['sid']) > STORY_MAX_ID_LENGTH) { $slug = ''; if (isset($args['slug'])) { $slug = $args['slug']; } if (function_exists('WS_makeId')) { $args['sid'] = WS_makeId($slug, STORY_MAX_ID_LENGTH); } else { $args['sid'] = COM_makeSid(); } } } $story = new Story(); $gl_edit = false; if (isset($args['gl_edit'])) { $gl_edit = $args['gl_edit']; } if ($gl_edit && !empty($args['gl_etag'])) { // First load the original story to check if it has been modified $result = $story->loadFromDatabase($args['sid']); if ($result == STORY_LOADED_OK) { if ($args['gl_etag'] != date('c', $story->_date)) { $svc_msg['error_desc'] = 'A more recent version of the story is available'; return PLG_RET_PRECONDITION_FAILED; } } else { $svc_msg['error_desc'] = 'Error loading story'; return PLG_RET_ERROR; } } // This function is also doing the security checks $result = $story->loadFromArgsArray($args); $sid = $story->getSid(); // Check if topics selected if not prompt required field if ($result == STORY_LOADED_OK) { if (!TOPIC_checkTopicSelectionControl()) { $result = STORY_EMPTY_REQUIRED_FIELDS; } } switch ($result) { case STORY_DUPLICATE_SID: $output .= COM_errorLog($LANG24[24], 2); if (!$args['gl_svc']) { $output .= storyeditor($sid); } $output = COM_createHTMLDocument($output, array('pagetitle' => $LANG24[5])); return PLG_RET_ERROR; break; case STORY_EXISTING_NO_EDIT_PERMISSION: $output .= COM_showMessageText($MESSAGE[29], $MESSAGE[30]); $output = COM_createHTMLDocument($output, array('pagetitle' => $MESSAGE[30])); COM_accessLog("User {$_USER['username']} tried to illegally submit or edit story {$sid}."); return PLG_RET_PERMISSION_DENIED; break; case STORY_NO_ACCESS_PARAMS: $output .= COM_showMessageText($MESSAGE[29], $MESSAGE[30]); $output = COM_createHTMLDocument($output, array('pagetitle' => $MESSAGE[30])); COM_accessLog("User {$_USER['username']} tried to illegally submit or edit story {$sid}."); return PLG_RET_PERMISSION_DENIED; break; case STORY_EMPTY_REQUIRED_FIELDS: $output .= COM_errorLog($LANG24[31], 2); if (!$args['gl_svc']) { $output .= storyeditor($sid); } $output = COM_createHTMLDocument($output); return PLG_RET_ERROR; break; default: break; } /* Image upload is not supported by the web-service at present */ if (!$args['gl_svc']) { // Delete any images if needed if (array_key_exists('delete', $args)) { $delete = count($args['delete']); for ($i = 1; $i <= $delete; $i++) { $ai_filename = DB_getItem($_TABLES['article_images'], 'ai_filename', "ai_sid = '{$sid}' AND ai_img_num = " . key($args['delete'])); STORY_deleteImage($ai_filename); DB_query("DELETE FROM {$_TABLES['article_images']} WHERE ai_sid = '{$sid}' AND ai_img_num = " . key($args['delete'])); next($args['delete']); } } // OK, let's upload any pictures with the article if (DB_count($_TABLES['article_images'], 'ai_sid', $sid) > 0) { $index_start = DB_getItem($_TABLES['article_images'], 'max(ai_img_num)', "ai_sid = '{$sid}'") + 1; } else { $index_start = 1; } if (count($_FILES) > 0 && $_CONF['maximagesperarticle'] > 0) { require_once $_CONF['path_system'] . 'classes/upload.class.php'; $upload = new Upload(); if (isset($_CONF['debug_image_upload']) && $_CONF['debug_image_upload']) { $upload->setLogFile($_CONF['path'] . 'logs/error.log'); $upload->setDebug(true); } $upload->setMaxFileUploads($_CONF['maximagesperarticle']); if (!empty($_CONF['image_lib'])) { if ($_CONF['image_lib'] == 'imagemagick') { // Using imagemagick $upload->setMogrifyPath($_CONF['path_to_mogrify']); } elseif ($_CONF['image_lib'] == 'netpbm') { // using netPBM $upload->setNetPBM($_CONF['path_to_netpbm']); } elseif ($_CONF['image_lib'] == 'gdlib') { // using the GD library $upload->setGDLib(); } $upload->setAutomaticResize(true); if ($_CONF['keep_unscaled_image'] == 1) { $upload->keepOriginalImage(true); } else { $upload->keepOriginalImage(false); } if (isset($_CONF['jpeg_quality'])) { $upload->setJpegQuality($_CONF['jpeg_quality']); } } $upload->setAllowedMimeTypes(array('image/gif' => '.gif', 'image/jpeg' => '.jpg,.jpeg', 'image/pjpeg' => '.jpg,.jpeg', 'image/x-png' => '.png', 'image/png' => '.png')); if (!$upload->setPath($_CONF['path_images'] . 'articles')) { $output = COM_showMessageText($upload->printErrors(false), $LANG24[30]); $output = COM_createHTMLDocument($output, array('pagetitle' => $LANG24[30])); echo $output; exit; } // NOTE: if $_CONF['path_to_mogrify'] is set, the call below will // force any images bigger than the passed dimensions to be resized. // If mogrify is not set, any images larger than these dimensions // will get validation errors $upload->setMaxDimensions($_CONF['max_image_width'], $_CONF['max_image_height']); $upload->setMaxFileSize($_CONF['max_image_size']); // size in bytes, 1048576 = 1MB // Set file permissions on file after it gets uploaded (number is in octal) $upload->setPerms('0644'); $filenames = array(); $end_index = $index_start + $upload->numFiles() - 1; for ($z = $index_start; $z <= $end_index; $z++) { $curfile = current($_FILES); if (!empty($curfile['name'])) { $pos = strrpos($curfile['name'], '.') + 1; $fextension = substr($curfile['name'], $pos); $filenames[] = $sid . '_' . $z . '.' . $fextension; } next($_FILES); } $upload->setFileNames($filenames); reset($_FILES); $upload->uploadFiles(); if ($upload->areErrors()) { $retval = COM_showMessageText($upload->printErrors(false), $LANG24[30]); $output = COM_createHTMLDocument($output, array('pagetitle' => $LANG24[30])); echo $retval; exit; } reset($filenames); for ($z = $index_start; $z <= $end_index; $z++) { DB_query("INSERT INTO {$_TABLES['article_images']} (ai_sid, ai_img_num, ai_filename) VALUES ('{$sid}', {$z}, '" . current($filenames) . "')"); next($filenames); } } if ($_CONF['maximagesperarticle'] > 0) { $errors = $story->checkAttachedImages(); if (count($errors) > 0) { $output .= COM_startBlock($LANG24[54], '', COM_getBlockTemplate('_msg_block', 'header')); $output .= $LANG24[55] . LB . '<ul>' . LB; foreach ($errors as $err) { $output .= '<li>' . $err . '</li>' . LB; } $output .= '</ul>' . LB; $output .= COM_endBlock(COM_getBlockTemplate('_msg_block', 'footer')); $output .= storyeditor($sid); $output = COM_createHTMLDocument($output, array('pagetitle' => $LANG24[54])); echo $output; exit; } } } $result = $story->saveToDatabase(); if ($result == STORY_SAVED) { // see if any plugins want to act on that story if (!empty($args['old_sid']) && $args['old_sid'] != $sid) { PLG_itemSaved($sid, 'article', $args['old_sid']); } else { PLG_itemSaved($sid, 'article'); } // update feed(s) COM_rdfUpToDateCheck('article', $story->DisplayElements('tid'), $sid); COM_rdfUpToDateCheck('comment'); STORY_updateLastArticlePublished(); CMT_updateCommentcodes(); if ($story->type == 'submission') { $output = COM_refresh($_CONF['site_admin_url'] . '/moderation.php?msg=9'); } else { $output = PLG_afterSaveSwitch($_CONF['aftersave_story'], COM_buildURL("{$_CONF['site_url']}/article.php?story={$sid}"), 'story', 9); } /* @TODO Set the object id here */ $svc_msg['id'] = $sid; return PLG_RET_OK; } }
$PageDataDisplay = $dsiSections->getAllData(); include 'veiws/editPage.php'; if (isset($_POST['submit']) && $_POST['submit'] == "Edit") { $editPage['page_name'] = $_POST['page_name']; $editPage['page_content'] = $_POST['page_content']; $editPage['page_status'] = $_POST['page_status']; $editPage['sectionId'] = $_POST['sectionId']; //$editPage['page_image'] = 'images/logo.png'; // must be reviewed if (!empty($_FILES['page_image']['name'][0])) { try { $file = $_FILES['page_image']; $allowedExts = array('jpg', 'png', 'gif', 'jpeg'); $uploadsDirecotry = "resources/uploads/"; $maxSize = 4000000; $upload = new Upload($file, $allowedExts, $uploadsDirecotry, $maxSize); $upload->uploadFiles(); $editPage['page_image'] = $uploadsDirecotry . $upload->getFileUrl(); } catch (Exception $exc) { $exc->getMessage(); } } else { $editPage['page_image'] = 'resources/images/logo.png'; } $tabename = "pages"; $id = $_GET['id']; try { $updatePage = new Update($editPage, $tabename); $updatedPage = $updatePage->editData($id); if ($updatedPage) { echo '<script type="text/javascript"> alert("The New Page was updated !"); history.back();</script>'; }
public function extractZipFile() { $this->file_name = html_entity_decode($this->file_name, ENT_QUOTES); $file_path = $this->intDir . DIRECTORY_SEPARATOR . $this->file_name; //The zip file name is set in $this->file_name $za = new ZipArchiveExtended(); $za->open($file_path); try { $za->createTree(); //get system temporary folder $tmpFolder = ini_get('upload_tmp_dir'); empty($tmpFolder) ? $tmpFolder = "/tmp" : null; $tmpFolder .= "/" . uniqid('') . "/"; mkdir($tmpFolder, 0777, true); $fileErrors = $za->extractFilesInTmp($tmpFolder); $za->close(); //compose an array that has the same structure of $_FILES $filesArray = array(); foreach ($za->treeList as $fileName) { $filesArray[$fileName] = array('name' => $fileName, 'tmp_name' => $tmpFolder . $fileName, 'error' => null, 'size' => filesize($tmpFolder . $fileName)); } /*** * * ERRORE di un file extratto dallo zip ( isset( $fileErrors[ $fileName ] ) ) ? $fileErrors[ $fileName ] : * **/ // The $this->cookieDir parameter makes Upload get the upload directory from the cookie. // In this way it'll find the unzipped files $uploadFile = new Upload($this->cookieDir); $uploadFile->setRaiseException($this->stopOnFileException); try { $stdResult = $uploadFile->uploadFiles($filesArray); if ($this->uploadFailed($stdResult)) { $this->uploadError = true; $this->uploadedFiles = $stdResult; } } catch (Exception $e) { $stdResult = array(); $this->result = array('errors' => array(array("code" => -1, "message" => $e->getMessage()))); $this->api_output['message'] = $e->getMessage(); return null; } return array_map("Upload::fixFileName", $za->treeList); } catch (Exception $e) { Log::doLog("ExtendedZipArchive Exception: {$e->getCode()} : {$e->getMessage()}"); $this->result['errors'][] = array('code' => $e->getCode(), 'message' => "Zip error: " . $e->getMessage(), 'debug' => $this->file_name); return null; } return array(); }
protected function _handleImageResize($to_path) { global $_CONF; require_once $_CONF['path_system'] . 'classes/upload.class.php'; // Figure out file name $path_parts = pathinfo($to_path); $filename = $path_parts['basename']; $upload = new Upload(); if (!empty($_CONF['image_lib'])) { if ($_CONF['image_lib'] == 'imagemagick') { // Using imagemagick $upload->setMogrifyPath($_CONF['path_to_mogrify']); } elseif ($_CONF['image_lib'] == 'netpbm') { // using netPBM $upload->setNetPBM($_CONF['path_to_netpbm']); } elseif ($_CONF['image_lib'] == 'gdlib') { // using the GD library $upload->setGDLib(); } $upload->setAutomaticResize(true); if (isset($_CONF['debug_image_upload']) && $_CONF['debug_image_upload']) { $upload->setLogFile($_CONF['path'] . 'logs/error.log'); $upload->setDebug(true); } if (isset($_CONF['jpeg_quality'])) { $upload->setJpegQuality($_CONF['jpeg_quality']); } } $upload->setAllowedMimeTypes(array('image/gif' => '.gif', 'image/jpeg' => '.jpg,.jpeg', 'image/pjpeg' => '.jpg,.jpeg', 'image/x-png' => '.png', 'image/png' => '.png')); // Set new path and image name if (!$upload->setPath($_CONF['path_images'] . 'userphotos')) { return; } // Current path of image to resize $path = $_CONF['path_images'] . 'userphotos/' . $filename; $path_parts = pathinfo($path); $_FILES['imagefile']['name'] = $path_parts['basename']; $_FILES['imagefile']['tmp_name'] = $path; $_FILES['imagefile']['type'] = ''; switch ($path_parts['extension']) { case 'gif': $_FILES['imagefile']['type'] = 'image/gif'; break; case 'jpg': case 'jpeg': $_FILES['imagefile']['type'] = 'image/jpeg'; break; case 'png': $_FILES['imagefile']['type'] = 'image/png'; break; } $_FILES['imagefile']['size'] = filesize($_FILES['imagefile']['tmp_name']); $_FILES['imagefile']['error'] = ''; $_FILES['imagefile']['non_upload'] = true; // Flag to bypass upload process via browser file form // do the upload if (!empty($filename)) { $upload->setFileNames($filename); $upload->setPerms('0644'); if ($_CONF['max_photo_width'] > 0 && $_CONF['max_photo_height'] > 0) { $upload->setMaxDimensions($_CONF['max_photo_width'], $_CONF['max_photo_height']); } else { $upload->setMaxDimensions($_CONF['max_image_width'], $_CONF['max_image_height']); } if ($_CONF['max_photo_size'] > 0) { $upload->setMaxFileSize($_CONF['max_photo_size']); } else { $upload->setMaxFileSize($_CONF['max_image_size']); } $upload->uploadFiles(); if ($upload->areErrors()) { return; } } return $path; // return new path and filename }
public function doAction() { $uploadFile = new Upload(); try { $stdResult = $uploadFile->uploadFiles($_FILES); } catch (Exception $e) { $stdResult = array(); $this->result = array('errors' => array(array("code" => -1, "message" => $e->getMessage()))); $this->api_output['message'] = $e->getMessage(); } $arFiles = array(); foreach ($stdResult as $input_name => $input_value) { $arFiles[] = $input_value->name; } //if fileupload was failed this index ( 0 = does not exists ) $default_project_name = @$arFiles[0]; if (count($arFiles) > 1) { $default_project_name = "MATECAT_PROJ-" . date("Ymdhi"); } if (empty($this->project_name)) { $this->project_name = $default_project_name; //'NO_NAME'.$this->create_project_name(); } if (empty($this->source_lang)) { $this->api_output['message'] = "Missing source language."; $this->result['errors'][] = array("code" => -3, "message" => "Missing source language."); } if (empty($this->target_lang)) { $this->api_output['message'] = "Missing target language."; $this->result['errors'][] = array("code" => -4, "message" => "Missing target language."); } //ONE OR MORE ERRORS OCCURRED : EXITING //for now we sent to api output only the LAST error message, but we log all if (!empty($this->result['errors'])) { $msg = "Error \n\n " . var_export(array_merge($this->result, $_POST), true); Log::doLog($msg); Utils::sendErrMailReport($msg); return -1; //exit code } /* Do conversions here */ $converter = new ConvertFileWrapper($stdResult); $converter->intDir = $uploadFile->getUploadPath(); $converter->errDir = INIT::$CONVERSIONERRORS_REPOSITORY . DIRECTORY_SEPARATOR . $uploadFile->getDirUploadToken(); $converter->cookieDir = $uploadFile->getDirUploadToken(); $converter->source_lang = $this->source_lang; $converter->target_lang = $this->target_lang; $converter->doAction(); $status = $converter->checkResult(); if (!empty($status)) { $this->api_output['message'] = 'Project Conversion Failure'; $this->api_output['debug'] = $status; $this->result['errors'] = $status; Log::doLog($status); return -1; } /* Do conversions here */ $projectManager = new ProjectManager(); $projectStructure = $projectManager->getProjectStructure(); $projectStructure['project_name'] = $this->project_name; $projectStructure['result'] = $this->result; $projectStructure['private_tm_key'] = $this->private_tm_key; $projectStructure['private_tm_user'] = $this->private_tm_user; $projectStructure['private_tm_pass'] = $this->private_tm_pass; $projectStructure['uploadToken'] = $uploadFile->getDirUploadToken(); $projectStructure['array_files'] = $arFiles; //list of file name $projectStructure['source_language'] = $this->source_lang; $projectStructure['target_language'] = explode(',', $this->target_lang); $projectStructure['mt_engine'] = $this->mt_engine; $projectStructure['tms_engine'] = $this->tms_engine; $projectStructure['status'] = Constants_ProjectStatus::STATUS_NOT_READY_FOR_ANALYSIS; $projectStructure['skip_lang_validation'] = true; $projectManager = new ProjectManager($projectStructure); $projectManager->createProject(); $this->result = $projectStructure['result']; if (!empty($projectStructure['result']['errors'])) { //errors already logged $this->api_output['message'] = 'Project Creation Failure'; $this->api_output['debug'] = $projectStructure['result']['errors']; } else { //everything ok $this->api_output['status'] = 'OK'; $this->api_output['message'] = 'Success'; $this->api_output['id_project'] = $projectStructure['result']['id_project']; $this->api_output['project_pass'] = $projectStructure['result']['ppassword']; } }
function uploadGlossary($input) { if (in_array($input["source"], $input["targets"])) { return array("result" => 0, "message" => "Error: Source lang is equal to one of targets"); } try { $uploadFile = new Upload(); $uploadResult = $uploadFile->uploadFiles($_FILES); $input["glossaryURI"] = $uploadResult->glossary->file_path; } catch (Exception $e) { $errorData = explode("->", $e->getMessage()); return array("result" => 0, "message" => "Error: " . trim($errorData[1])); } return array("result" => 1, "message" => "Glossary '" . $input["glossaryName"] . "' successfully uploaded.<br/><br/>"); }
public function doAction() { if (!$this->validateAuthHeader()) { header('HTTP/1.0 401 Unauthorized'); $this->api_output['message'] = 'Authentication failed'; return -1; } if (@count($this->api_output['debug']) > 0) { return; } $uploadFile = new Upload(); try { $stdResult = $uploadFile->uploadFiles($_FILES); } catch (Exception $e) { $stdResult = array(); $this->result = array('errors' => array(array("code" => -1, "message" => $e->getMessage()))); $this->api_output['message'] = $e->getMessage(); } $arFiles = array(); foreach ($stdResult as $input_name => $input_value) { $arFiles[] = $input_value->name; } //if fileupload was failed this index ( 0 = does not exists ) $default_project_name = @$arFiles[0]; if (count($arFiles) > 1) { $default_project_name = "MATECAT_PROJ-" . date("Ymdhi"); } if (empty($this->project_name)) { $this->project_name = $default_project_name; //'NO_NAME'.$this->create_project_name(); } if (empty($this->source_lang)) { $this->api_output['message'] = "Missing source language."; $this->result['errors'][] = array("code" => -3, "message" => "Missing source language."); } if (empty($this->target_lang)) { $this->api_output['message'] = "Missing target language."; $this->result['errors'][] = array("code" => -4, "message" => "Missing target language."); } //ONE OR MORE ERRORS OCCURRED : EXITING //for now we sent to api output only the LAST error message, but we log all if (!empty($this->result['errors'])) { $msg = "Error \n\n " . var_export(array_merge($this->result, $_POST), true); Log::doLog($msg); Utils::sendErrMailReport($msg); return -1; //exit code } $cookieDir = $uploadFile->getDirUploadToken(); $intDir = INIT::$UPLOAD_REPOSITORY . DIRECTORY_SEPARATOR . $cookieDir; $errDir = INIT::$STORAGE_DIR . DIRECTORY_SEPARATOR . 'conversion_errors' . DIRECTORY_SEPARATOR . $cookieDir; $response_stack = array(); foreach ($arFiles as $file_name) { $ext = FilesStorage::pathinfo_fix($file_name, PATHINFO_EXTENSION); $conversionHandler = new ConversionHandler(); $conversionHandler->setFileName($file_name); $conversionHandler->setSourceLang($this->source_lang); $conversionHandler->setTargetLang($this->target_lang); $conversionHandler->setSegmentationRule($this->seg_rule); $conversionHandler->setCookieDir($cookieDir); $conversionHandler->setIntDir($intDir); $conversionHandler->setErrDir($errDir); $status = array(); if ($ext == "zip") { // this makes the conversionhandler accumulate eventual errors on files and continue $conversionHandler->setStopOnFileException(false); $fileObjects = $conversionHandler->extractZipFile(); //call convertFileWrapper and start conversions for each file if ($conversionHandler->uploadError) { $fileErrors = $conversionHandler->getUploadedFiles(); foreach ($fileErrors as $fileError) { if (count($fileError->error) == 0) { continue; } $brokenFileName = ZipArchiveExtended::getFileName($fileError->name); /* * TODO * return error code is 2 because * <=0 is for errors * 1 is OK * * In this case, we raise warnings, hence the return code must be a new code */ $this->result['code'] = 2; $this->result['errors'][$brokenFileName] = array('code' => $fileError->error['code'], 'message' => $fileError->error['message'], 'debug' => $brokenFileName); } } $realFileObjectInfo = $fileObjects; $realFileObjectNames = array_map(array('ZipArchiveExtended', 'getFileName'), $fileObjects); foreach ($realFileObjectNames as $i => &$fileObject) { $__fileName = $fileObject; $__realFileName = $realFileObjectInfo[$i]; $filesize = filesize($intDir . DIRECTORY_SEPARATOR . $__realFileName); $fileObject = array('name' => $__fileName, 'size' => $filesize); $realFileObjectInfo[$i] = $fileObject; } $this->result['data'][$file_name] = json_encode($realFileObjectNames); $stdFileObjects = array(); if ($fileObjects !== null) { foreach ($fileObjects as $fName) { if (isset($fileErrors) && isset($fileErrors->{$fName}) && !empty($fileErrors->{$fName}->error)) { continue; } $newStdFile = new stdClass(); $newStdFile->name = $fName; $stdFileObjects[] = $newStdFile; } } else { $errors = $conversionHandler->getResult(); $errors = array_map(array('Upload', 'formatExceptionMessage'), $errors['errors']); $this->result['errors'] = array_merge($this->result['errors'], $errors); $this->api_output['message'] = "Zip Error"; $this->api_output['debug'] = $this->result['errors']; return false; } /* Do conversions here */ $converter = new ConvertFileWrapper($stdFileObjects, false); $converter->intDir = $intDir; $converter->errDir = $errDir; $converter->cookieDir = $cookieDir; $converter->source_lang = $this->source_lang; $converter->target_lang = $this->target_lang; $converter->doAction(); $status = $errors = $converter->checkResult(); if (count($errors) > 0) { // $this->result[ 'errors' ] = array_merge( $this->result[ 'errors' ], $errors ); $this->result['code'] = 2; foreach ($errors as $__err) { $brokenFileName = ZipArchiveExtended::getFileName($__err['debug']); if (!isset($this->result['errors'][$brokenFileName])) { $this->result['errors'][$brokenFileName] = array('code' => $__err['code'], 'message' => $__err['message'], 'debug' => $brokenFileName); } } } } else { $conversionHandler->doAction(); $this->result = $conversionHandler->getResult(); if ($this->result['code'] > 0) { $this->result = array(); } } } $status = array_values($status); if (!empty($status)) { $this->api_output['message'] = 'Project Conversion Failure'; $this->api_output['debug'] = $status; $this->result['errors'] = $status; Log::doLog($status); return -1; } /* Do conversions here */ if (isset($this->result['data']) && !empty($this->result['data'])) { foreach ($this->result['data'] as $zipFileName => $zipFiles) { $zipFiles = json_decode($zipFiles, true); $fileNames = Utils::array_column($zipFiles, 'name'); $arFiles = array_merge($arFiles, $fileNames); } } $newArFiles = array(); $linkFiles = scandir($intDir); foreach ($arFiles as $__fName) { if ('zip' == FilesStorage::pathinfo_fix($__fName, PATHINFO_EXTENSION)) { $fs = new FilesStorage(); $fs->cacheZipArchive(sha1_file($intDir . DIRECTORY_SEPARATOR . $__fName), $intDir . DIRECTORY_SEPARATOR . $__fName); $linkFiles = scandir($intDir); //fetch cache links, created by converter, from upload directory foreach ($linkFiles as $storedFileName) { //check if file begins with the name of the zip file. // If so, then it was stored in the zip file. if (strpos($storedFileName, $__fName) !== false && substr($storedFileName, 0, strlen($__fName)) == $__fName) { //add file name to the files array $newArFiles[] = $storedFileName; } } } else { //this file was not in a zip. Add it normally if (file_exists($intDir . DIRECTORY_SEPARATOR . $__fName)) { $newArFiles[] = $__fName; } } } $arFiles = $newArFiles; $projectManager = new ProjectManager(); $projectStructure = $projectManager->getProjectStructure(); $projectStructure['project_name'] = $this->project_name; $projectStructure['job_subject'] = $this->subject; $projectStructure['result'] = $this->result; $projectStructure['private_tm_key'] = $this->private_tm_key; $projectStructure['private_tm_user'] = $this->private_tm_user; $projectStructure['private_tm_pass'] = $this->private_tm_pass; $projectStructure['uploadToken'] = $uploadFile->getDirUploadToken(); $projectStructure['array_files'] = $arFiles; //list of file name $projectStructure['source_language'] = $this->source_lang; $projectStructure['target_language'] = explode(',', $this->target_lang); $projectStructure['mt_engine'] = $this->mt_engine; $projectStructure['tms_engine'] = $this->tms_engine; $projectStructure['status'] = Constants_ProjectStatus::STATUS_NOT_READY_FOR_ANALYSIS; $projectStructure['skip_lang_validation'] = true; $projectStructure['owner'] = $this->owner; if ($this->current_user != null) { $projectStructure['id_customer'] = $this->current_user->getEmail(); } if ($this->current_user != null) { $projectStructure['id_customer'] = $this->current_user->getEmail(); } $projectManager = new ProjectManager($projectStructure); $projectManager->createProject(); $this->result = $projectStructure['result']; if (!empty($projectStructure['result']['errors'])) { //errors already logged $this->api_output['message'] = 'Project Creation Failure'; $this->api_output['debug'] = array_values($projectStructure['result']['errors']); } else { //everything ok $this->api_output['status'] = 'OK'; $this->api_output['message'] = 'Success'; $this->api_output['id_project'] = $projectStructure['result']['id_project']; $this->api_output['project_pass'] = $projectStructure['result']['ppassword']; $this->api_output['new_keys'] = $this->new_keys; $this->api_output['analyze_url'] = INIT::$HTTPHOST . "/analyze/" . $projectStructure['project_name'] . "/" . $projectStructure['result']['id_project'] . "-" . $projectStructure['result']['ppassword']; } }
/** * Upload new photo, delete old photo * * @param string $delete_photo 'on': delete old photo * @return string filename of new photo (empty = no new photo) */ function handlePhotoUpload($delete_photo = '') { global $_CONF, $_TABLES, $_USER, $LANG24; require_once $_CONF['path_system'] . 'classes/upload.class.php'; $upload = new Upload(); if (!empty($_CONF['image_lib'])) { if ($_CONF['image_lib'] === 'imagemagick') { // Using imagemagick $upload->setMogrifyPath($_CONF['path_to_mogrify']); } elseif ($_CONF['image_lib'] === 'netpbm') { // using netPBM $upload->setNetPBM($_CONF['path_to_netpbm']); } elseif ($_CONF['image_lib'] === 'gdlib') { // using the GD library $upload->setGDLib(); } $upload->setAutomaticResize(true); if (isset($_CONF['debug_image_upload']) && $_CONF['debug_image_upload']) { $upload->setLogFile($_CONF['path'] . 'logs/error.log'); $upload->setDebug(true); } if (isset($_CONF['jpeg_quality'])) { $upload->setJpegQuality($_CONF['jpeg_quality']); } } $upload->setAllowedMimeTypes(array('image/gif' => '.gif', 'image/jpeg' => '.jpg,.jpeg', 'image/pjpeg' => '.jpg,.jpeg', 'image/x-png' => '.png', 'image/png' => '.png')); if (!$upload->setPath($_CONF['path_images'] . 'userphotos')) { $display = COM_showMessageText($upload->printErrors(false), $LANG24[30]) . COM_createHTMLDocument($display, array('pagetitle' => $LANG24[30])); COM_output($display); exit; // don't return } $filename = ''; if (!empty($delete_photo) && $delete_photo === 'on') { $delete_photo = true; } else { $delete_photo = false; } $curphoto = DB_getItem($_TABLES['users'], 'photo', "uid = {$_USER['uid']}"); if (empty($curphoto)) { $delete_photo = false; } // see if user wants to upload a (new) photo $newphoto = $_FILES['photo']; if (!empty($newphoto['name'])) { $pos = strrpos($newphoto['name'], '.') + 1; $fextension = substr($newphoto['name'], $pos); $filename = $_USER['username'] . '.' . $fextension; if (!empty($curphoto) && $filename != $curphoto) { $delete_photo = true; } else { $delete_photo = false; } } // delete old photo first if ($delete_photo) { USER_deletePhoto($curphoto); } // now do the upload if (!empty($filename)) { $upload->setFileNames($filename); $upload->setPerms('0644'); if ($_CONF['max_photo_width'] > 0 && $_CONF['max_photo_height'] > 0) { $upload->setMaxDimensions($_CONF['max_photo_width'], $_CONF['max_photo_height']); } else { $upload->setMaxDimensions($_CONF['max_image_width'], $_CONF['max_image_height']); } if ($_CONF['max_photo_size'] > 0) { $upload->setMaxFileSize($_CONF['max_photo_size']); } else { $upload->setMaxFileSize($_CONF['max_image_size']); } $upload->uploadFiles(); if ($upload->areErrors()) { $display = COM_showMessageText($upload->printErrors(false), $LANG24[30]); $display = COM_createHTMLDocument($display, array('pagetitle' => $LANG24[30])); COM_output($display); exit; // don't return } } elseif (!$delete_photo && !empty($curphoto)) { $filename = $curphoto; } return $filename; }
/** * This function allows the administrator to import batches of users * * TODO: This function should first display the users that are to be imported, * together with the invalid users and the reason of invalidity. Each valid line * should have a checkbox that allows selection of final to be imported users. * After clicking an extra button, the actual import should take place. This will * prevent problems in case the list formatting is incorrect. * * @return string HTML with success or error message * */ function importusers() { global $_CONF, $_TABLES, $LANG04, $LANG28; // Setting this to true will cause import to print processing status to // webpage and to the error.log file $verbose_import = true; $retval = ''; // Bulk import implies admin authorisation: $_CONF['usersubmission'] = 0; // First, upload the file require_once $_CONF['path_system'] . 'classes/upload.class.php'; $upload = new Upload(); $upload->setPath($_CONF['path_data']); $upload->setAllowedMimeTypes(array('text/plain' => '.txt')); $upload->setFileNames('user_import_file.txt'); if ($upload->uploadFiles()) { // Good, file got uploaded, now install everything $thefile = current($_FILES); $filename = $_CONF['path_data'] . 'user_import_file.txt'; if (!file_exists($filename)) { // empty upload form COM_redirect($_CONF['site_admin_url'] . '/user.php?mode=importform'); } } else { // A problem occurred, print debug information $retval = COM_showMessageText($upload->printErrors(false), $LANG28[24]); $retval = COM_createHTMLDocument($retval, array('pagetitle' => $LANG28[22])); return $retval; } $users = file($filename); $retval .= COM_startBlock($LANG28[31], '', COM_getBlockTemplate('_admin_block', 'header')); // Following variables track import processing statistics $successes = 0; $failures = 0; foreach ($users as $line) { $line = rtrim($line); if (empty($line)) { continue; } list($full_name, $u_name, $email) = explode("\t", $line); $full_name = strip_tags($full_name); $u_name = COM_applyFilter($u_name); $email = COM_applyFilter($email); if ($verbose_import) { $retval .= "<br" . XHTML . "><b>Working on username={$u_name}, fullname={$full_name}, and email={$email}</b><br" . XHTML . ">\n"; COM_errorLog("Working on username={$u_name}, fullname={$full_name}, and email={$email}", 1); } // prepare for database $userName = trim($u_name); $fullName = trim($full_name); $emailAddr = trim($email); if (COM_isEmail($email)) { // email is valid form $ucount = DB_count($_TABLES['users'], 'username', DB_escapeString($userName)); $ecount = DB_count($_TABLES['users'], 'email', DB_escapeString($emailAddr)); if ($ucount == 0 && $ecount == 0) { // user doesn't already exist - pass in optional true for $batchimport parm $uid = USER_createAccount($userName, $emailAddr, '', $fullName, '', '', '', true); $result = USER_createAndSendPassword($userName, $emailAddr, $uid); if ($result) { $successes++; if ($verbose_import) { $retval .= "<br" . XHTML . "> Account for <b>{$u_name}</b> created successfully.<br" . XHTML . ">\n"; COM_errorLog("Account for {$u_name} created successfully", 1); } } else { // user creation failed $retval .= "<br" . XHTML . ">ERROR: There was a problem creating the account for <b>{$u_name}</b>.<br" . XHTML . ">\n"; COM_errorLog("ERROR: here was a problem creating the account for {$u_name}.", 1); } } else { if ($verbose_import) { $retval .= "<br" . XHTML . "><b>{$u_name}</b> or <b>{$email}</b> already exists, account not created.<br" . XHTML . ">\n"; // user already exists COM_errorLog("{$u_name},{$email}: username or email already exists, account not created", 1); } $failures++; } // end if $ucount == 0 && ecount == 0 } else { if ($verbose_import) { $retval .= "<br" . XHTML . "><b>{$email}</b> is not a valid email address, account not created<br" . XHTML . ">\n"; // malformed email COM_errorLog("{$email} is not a valid email address, account not created", 1); } $failures++; } // end if COM_isEmail($email) } // end foreach unlink($filename); $retval .= '<p>' . sprintf($LANG28[32], $successes, $failures); $retval .= COM_endBlock(COM_getBlockTemplate('_admin_block', 'footer')); $retval = COM_createHTMLDocument($retval, array('pagetitle' => $LANG28[24])); return $retval; }