The Arcive of vBulletin Modifications Site. |
|
|
#1
|
|||
|
|||
|
Hey guys, I am trying to import thousands of existing photos into VB5. The images exist in folders/subfolders on the server. Anyone have a basic script to programmatically create a new gallery folder for a user and import a photo into it? I can probably figure it out from there if I had a sample to look at. Thanks in advance!
--------------- Added [DATE]1492107744[/DATE] at [TIME]1492107744[/TIME] --------------- A little more info as I keep trying to figure this out on my own - when I do this: Code:
$response = $api->callApi('content_gallery', 'add', array('data' => $data, 'options' => $options));
|
|
#2
|
||||
|
||||
|
How are you executing the api? You should be logged in to create gallery post unless you enable permissions for guests which I assume you don't want.
|
|
#3
|
|||
|
|||
|
Thanks! That helped me get past that issue. Now, I am getting this response when trying to add the image:
Code:
Array
(
[errors] => Array
(
[0] => Array
(
[0] => unexpected_error
[1] => Upload failed. PHP upload error: 0
)
)
)
Code:
// This line does add the node for the album
$albumId = $api->callApi('content_gallery', 'add', array('data' => $data, 'options' => $options));
// Here, I get the info on a test file to try and add programatically
$fileName = '/var/www/mydomain.com/gw/photos/Architectural/wallpaper-1st-id-arch.png';
$fileParts = pathinfo($fileName);
$imageName = $fileParts['filename'];
// I don't want to lose the original file, so I copy it into a tempfile, to simulate uploading it
$tmpName = tempnam('/tmp', 'INC');
copy($fileName, '/tmp/' . $imageName);
rename('/tmp/' . $imageName, $tmpName);
$fileInfo = array();
$fileInfo['uploadFrom'] = 'profile';
$fileInfo['parentid'] = $albumId;
$fileInfo['tmp_name'] = $tmpName;
$fileInfo['name'] = $fileParts['basename'];
$fileInfo['size'] = filesize($fileName);
$fileInfo['type'] = 'image/png';
$photos = array($fileInfo);
// Upload the file and add it
$response = $api->callApi('content_attach', 'upload', array('photos' => $photos));
print_r($response); exit;
--------------- Added [DATE]1492129123[/DATE] at [TIME]1492129123[/TIME] --------------- Ok, I got past that problem. I needed to just pass 'file' => $fileInfo and do away with the $photos bit I was trying. At any rate, it does "upload" the image, but now I need to somehow get it to show up in the gallery. I'm thinking I need to do something like this: Code:
$response = $api->callApi('content_photo', 'add', ..... );
--------------- Added [DATE]1492129263[/DATE] at [TIME]1492129263[/TIME] --------------- Tried this, but to no avail: Code:
$response = $api->callApi('content_photo', 'add', array($albumId, array('filedataid' => $response['filedataid'])));
Code:
Array
(
[errors] => Array
(
[0] => Array
(
[0] => invalid_data
)
)
)
Also, I noticed that in the vb_filedata table, that it had resized my test image (scaled it down). Is there some way to prevent that? These need to stay in their native 1920x1080 resolution. Thanks! |
|
#4
|
||||
|
||||
|
In the Attachment Type Manager, you can configure the maximum width and height and filesize for each file extension.
|
|
#5
|
|||
|
|||
|
Any ideas on the actual call to "$api->callApi('content_photo' ...."? Is that the right call to use? If so, not sure what the arguments need to be.
I've also tried this, but to no avail: Code:
// Upload the file and add it
$response = $api->callApi('content_attach', 'upload', array('file' => $fileInfo));
$data = array(
'parentId' => $albumId,
'filedataid' => $response['filedataid'],
);
$response = $api->callApi('content_photo', 'add', array('data' => $data));
|
|
#6
|
|||
|
|||
|
Anyone?
|
|
#7
|
||||
|
||||
|
Take a look at the actionGallery() function in /includes/vb5/frontend/controller/createcontent.php. That's the function called when you submit a gallery content type post.
|
|
#8
|
|||
|
|||
|
Thanks, mate! I'll take a peek.
|
![]() |
|
|
| X vBulletin 3.8.12 by vBS Debug Information | |
|---|---|
|
|
More Information |
|
|
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|