mirror of
https://github.com/Piwigo/Piwigo.git
synced 2026-07-21 09:03:38 +02:00
feature 839, first step : early proof of concept, no error handling. A
remote client can add a photo in a category thanks to the web API. A new "upload" directory is created (write access required on the base directory). Uploaded photo have path such as upload/<year>/<month>/<day>/<datetime>-random.jpg. The thumbnail must come with the "web sized" photo. The photo has no storage_category_id. Bugs still need to be fixed and a discussion must occur before next steps. git-svn-id: http://piwigo.org/svn/trunk@2463 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
@@ -915,6 +915,106 @@ UPDATE '.IMAGES_TABLE.'
|
||||
return $affected_rows;
|
||||
}
|
||||
|
||||
function ws_images_add($params, &$service)
|
||||
{
|
||||
global $conf;
|
||||
|
||||
// name
|
||||
// category_id
|
||||
// file_content
|
||||
// file_sum
|
||||
// thumbnail_content
|
||||
// thumbnail_sum
|
||||
|
||||
// $fh_log = fopen('/tmp/php.log', 'w');
|
||||
// fwrite($fh_log, time()."\n");
|
||||
// fwrite($fh_log, 'input: '.$params['file_sum']."\n");
|
||||
// fwrite($fh_log, 'input: '.$params['thumbnail_sum']."\n");
|
||||
|
||||
// current date
|
||||
list($dbnow) = mysql_fetch_row(pwg_query('SELECT NOW();'));
|
||||
list($year, $month, $day) = preg_split('/[^\d]/', $dbnow, 4);
|
||||
|
||||
$upload_dir = sprintf(
|
||||
PHPWG_ROOT_PATH.'upload/%s/%s/%s',
|
||||
$year,
|
||||
$month,
|
||||
$day
|
||||
);
|
||||
|
||||
fwrite($fh_log, $upload_dir."\n");
|
||||
|
||||
if (!is_dir($upload_dir)) {
|
||||
umask(0000);
|
||||
$recursive = true;
|
||||
mkdir($upload_dir, 0777, $recursive);
|
||||
}
|
||||
|
||||
$date_string = preg_replace('/[^\d]/', '', $dbnow);
|
||||
$random_string = substr($params['file_sum'], 0, 8);
|
||||
|
||||
$filename_wo_ext = $date_string.'-'.$random_string;
|
||||
|
||||
$file_path = $upload_dir.'/'.$filename_wo_ext.'.jpg';
|
||||
$fh_file = fopen($file_path, 'w');
|
||||
fwrite($fh_file, base64_decode($params['file_content']));
|
||||
fclose($fh_file);
|
||||
|
||||
// check dumped file md5sum with expected md5sum
|
||||
|
||||
$thumbnail_dir = $upload_dir.'/thumbnail';
|
||||
if (!is_dir($thumbnail_dir)) {
|
||||
umask(0000);
|
||||
mkdir($thumbnail_dir, 0777);
|
||||
}
|
||||
|
||||
$thumbnail_path = sprintf(
|
||||
'%s/%s%s.%s',
|
||||
$thumbnail_dir,
|
||||
$conf['prefix_thumbnail'],
|
||||
$filename_wo_ext,
|
||||
'jpg'
|
||||
);
|
||||
$fh_thumbnail = fopen($thumbnail_path, 'w');
|
||||
fwrite($fh_thumbnail, base64_decode($params['thumbnail_content']));
|
||||
fclose($fh_thumbnail);
|
||||
|
||||
// check dumped thumbnail md5
|
||||
|
||||
// fwrite($fh_log, 'output: '.md5_file($file_path)."\n");
|
||||
// fwrite($fh_log, 'output: '.md5_file($thumbnail_path)."\n");
|
||||
|
||||
// database registration
|
||||
$insert = array(
|
||||
'file' => $filename_wo_ext.'.jpg',
|
||||
'date_available' => $dbnow,
|
||||
'tn_ext' => 'jpg',
|
||||
'name' => $params['name'],
|
||||
'path' => $file_path,
|
||||
);
|
||||
|
||||
include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
|
||||
mass_inserts(
|
||||
IMAGES_TABLE,
|
||||
array_keys($insert),
|
||||
array($insert)
|
||||
);
|
||||
|
||||
$image_id = mysql_insert_id();
|
||||
|
||||
$insert = array(
|
||||
'category_id' => $params['category_id'],
|
||||
'image_id'=> $image_id,
|
||||
);
|
||||
mass_inserts(
|
||||
IMAGE_CATEGORY_TABLE,
|
||||
array_keys($insert),
|
||||
array($insert)
|
||||
);
|
||||
|
||||
// fclose($fh_log);
|
||||
}
|
||||
|
||||
/**
|
||||
* perform a login (web service method)
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user