/** * metaWeblog.newMediaObject * * @param array $params Contains blog id, username, password and file */ function metaweblog_newMediaObject($params) { global $PIVOTX, $xmlrpcerruser; $conv = $params->getParam(0); $blogid = $conv->scalarval(); $conv = $params->getParam(1); $user = $conv->scalarval(); $conv = $params->getParam(2); $pass = $conv->scalarval(); $conv = $params->getParam(3); $file = php_xmlrpc_decode($conv); // Check password $login = pivotx_get_userid($user, $pass); $uid = $login['uid']; if ($uid != -1) { if (!empty($file['name'])) { $filename = basename($file['name']); // Clean up file name (only lowercase letters, numbers, underscores and hyphens) $filename = preg_replace("/[^a-z0-9._-]/", "", str_replace(array(' ', '%20'), '-', strtolower($filename))); $filename = makeUploadFolder($filename) . $filename; // Always write to a new file if the name already exists if (file_exists($filename)) { $fileext = getExtension($filename); $tmp = substr($filename, 0, -strlen(".{$fileext}")); while (file_exists($filename)) { $i++; $filename = $tmp . '_' . $i . ".{$fileext}"; } } $url = str_replace($PIVOTX['paths']['upload_base_path'], $PIVOTX['paths']['upload_base_url'], $filename); writeFile($filename, $file['bits'], 'wb'); } else { debug("Media object has no name."); $err = "Media object has no name."; } } else { $err = $login['err']; } if ($err) { return new xmlrpcresp(0, $xmlrpcerruser + 1, $err); } else { $myResp = php_xmlrpc_encode(array('url' => $PIVOTX['paths']['host'] . $url)); return new xmlrpcresp($myResp); } }
// Make sure we're logged in.. require_once dirname(__FILE__) . '/lib.php'; initializePivotX(false); $PIVOTX['session']->minLevel(PIVOTX_UL_NORMAL); // Settings $targetDir = $PIVOTX['paths']['cache_path'] . 'plupload'; $cleanupTargetDir = true; // Remove old files $maxFileAge = 60 * 60; // Temp file age in seconds switch ($_GET['type']) { case 'image': case 'images': case 'file': case 'files': $targetDir = makeUploadFolder(); $cleanupTargetDir = false; break; } if (isset($_GET['path']) && $_GET['path'] != '') { /* Using same user level as in fileOperations (in lib.php) */ $PIVOTX['session']->minLevel(PIVOTX_UL_ADVANCED); $path = cleanPath($_GET['path']); // Don't ever allow uploading outside the images, templates and db folders. if (!uploadAllowed($path)) { die('{"jsonrpc" : "2.0", "error" : {"code": 104, "message": "Uploading to illegal directory."}, "id" : "id"}'); } $targetDir = stripTrailingSlash($path); $cleanupTargetDir = false; } // 5 minutes execution time