123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- <?php
- /**
- * Multi-image uploader action
- *
- * @author Cash Costello
- * @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License v2
- */
- elgg_load_library('tidypics:upload');
- $img_river_view = elgg_get_plugin_setting('img_river_view', 'tidypics');
- $guid = (int) get_input('guid');
- $album = get_entity($guid);
- if (!$album) {
- register_error(elgg_echo('tidypics:baduploadform'));
- forward(REFERER);
- }
- // post limit exceeded
- if (count($_FILES) == 0) {
- trigger_error('Tidypics warning: user exceeded post limit on image upload', E_USER_WARNING);
- register_error(elgg_echo('tidypics:exceedpostlimit'));
- forward(REFERER);
- }
- // test to make sure at least 1 image was selected by user
- $num_images = 0;
- foreach($_FILES['images']['name'] as $name) {
- if (!empty($name)) {
- $num_images++;
- }
- }
- if ($num_images == 0) {
- // have user try again
- register_error(elgg_echo('tidypics:noimages'));
- forward(REFERER);
- }
- // create the image object for each upload
- $uploaded_images = array();
- $not_uploaded = array();
- $error_msgs = array();
- foreach ($_FILES['images']['name'] as $index => $value) {
- $data = array();
- foreach ($_FILES['images'] as $key => $values) {
- $data[$key] = $values[$index];
- }
- if (empty($data['name'])) {
- continue;
- }
- $name = htmlspecialchars($data['name'], ENT_QUOTES, 'UTF-8', false);
- $mime = tp_upload_get_mimetype($name);
- $image = new TidypicsImage();
- $image->title = $name;
- $image->container_guid = $album->getGUID();
- $image->setMimeType($mime);
- $image->access_id = $album->access_id;
- try {
- $result = $image->save($data);
- } catch (Exception $e) {
- $image->delete();
- $result = false;
- array_push($not_uploaded, $name);
- array_push($error_msgs, $e->getMessage());
- }
- if ($result) {
- array_push($uploaded_images, $image->getGUID());
- if ($img_river_view == "all") {
- elgg_create_river_item(array('view' => 'river/object/image/create',
- 'action_type' => 'create',
- 'subject_guid' => $image->getOwnerGUID(),
- 'object_guid' => $image->getGUID()));
- }
- }
- }
- if (count($uploaded_images)) {
- // Create a new batch object to contain these photos
- $batch = new TidypicsBatch();
- $batch->access_id = $album->access_id;
- $batch->container_guid = $album->getGUID();
- if ($batch->save()) {
- foreach ($uploaded_images as $uploaded_guid) {
- add_entity_relationship($uploaded_guid, "belongs_to_batch", $batch->getGUID());
- }
- }
- $album->prependImageList($uploaded_images);
- // "added images to album" river
- if ($img_river_view == "batch" && $album->new_album == false) {
- elgg_create_river_item(array('view' => 'river/object/tidypics_batch/create',
- 'action_type' => 'create',
- 'subject_guid' => $batch->getOwnerGUID(),
- 'object_guid' => $batch->getGUID()));
- } else if ($img_river_view == "1" && $album->new_album == false) {
- elgg_create_river_item(array('view' => 'river/object/tidypics_batch/create_single_image',
- 'action_type' => 'create',
- 'subject_guid' => $batch->getOwnerGUID(),
- 'object_guid' => $batch->getGUID()));
- }
- // "created album" river
- if ($album->new_album) {
- $album->new_album = false;
- $album->first_upload = true;
- $album_river_view = elgg_get_plugin_setting('album_river_view', 'tidypics');
- if ($album_river_view != "none") {
- elgg_create_river_item(array('view' => 'river/object/album/create',
- 'action_type' => 'create',
- 'subject_guid' => $album->getOwnerGUID(),
- 'object_guid' => $album->getGUID()));
- }
- // "created album" notifications
- // we throw the notification manually here so users are not told about the new album until
- // there are at least a few photos in it
- if ($album->shouldNotify()) {
- elgg_trigger_event('album_first', 'album', $album);
- $album->last_notified = time();
- }
- } else {
- // "added image to album" notifications
- if ($album->first_upload) {
- $album->first_upload = false;
- }
- if ($album->shouldNotify()) {
- elgg_trigger_event('album_more', 'album', $album);
- $album->last_notified = time();
- }
- }
- }
- if (count($not_uploaded) > 0) {
- if (count($uploaded_images) > 0) {
- $error = sprintf(elgg_echo("tidypics:partialuploadfailure"), count($not_uploaded), count($not_uploaded) + count($uploaded_images)) . '<br />';
- } else {
- $error = elgg_echo("tidypics:completeuploadfailure") . '<br />';
- }
- $num_failures = count($not_uploaded);
- for ($i = 0; $i < $num_failures; $i++) {
- $error .= "{$not_uploaded[$i]}: {$error_msgs[$i]} <br />";
- }
- register_error($error);
- if (count($uploaded_images) == 0) {
- //upload failed, so forward to previous page
- forward(REFERER);
- } else {
- // some images did upload so we fall through
- }
- } else {
- system_message(elgg_echo('tidypics:upl_success'));
- }
- forward("photos/edit/$batch->guid");
|