'add_photos'))); $user_permissions = community_get_user_permissions($user['id']); if (count($user_permissions['upload_categories']) == 0 and !$user_permissions ['create_whole_gallery']) { redirect(make_index_url()); } // +-----------------------------------------------------------------------+ // | process form | // +-----------------------------------------------------------------------+ $page['errors'] = array(); $page['infos'] = array(); // this is for "browser uploader", for Flash Uploader the problem is solved // with function community_uploadify_privacy_level (see main.inc.php) $_POST['level'] = 16; if (isset($_GET['processed'])) { $hacking_attempt = false; // is the user authorized to upload in this album? if (!in_array($_POST['category'], $user_permissions['upload_categories'])) { echo 'Hacking attempt, you have no permission to upload in this album'; $hacking_attempt = true; } if ($hacking_attempt) { if (isset($_SESSION['uploads'][ $_POST['upload_id'] ])) { delete_elements($_SESSION['uploads'][ $_POST['upload_id'] ], true); } exit(); } } include_once(PHPWG_ROOT_PATH.'admin/include/photos_add_direct_process.inc.php'); // +-----------------------------------------------------------------------+ // | limits | // +-----------------------------------------------------------------------+ // has the user reached its limits? $user['community_usage'] = community_get_user_limits($user['id']); // echo '
'; print_r($user['community_usage']); echo '
'; // +-----------------------------------------------------------------------+ // | set properties, moderate, notify | // +-----------------------------------------------------------------------+ if (isset($image_ids) and count($image_ids) > 0) { $query = ' SELECT id, file, filesize FROM '.IMAGES_TABLE.' WHERE id IN ('.implode(',', $image_ids).') ORDER BY id DESC ;'; $images = array_from_query($query); $nb_images_deleted = 0; // upload has just happened, maybe the user is over quota if ($user_permissions['storage'] > 0 and $user['community_usage']['storage'] > $user_permissions['storage']) { foreach ($images as $image) { array_push( $page['errors'], sprintf(l10n('Photo %s rejected.'), $image['file']) .' '.sprintf(l10n('Disk usage quota reached (%uMB)'), $user_permissions['storage']) ); delete_elements(array($image['id']), true); foreach ($page['thumbnails'] as $tn_idx => $thumbnail) { if ($thumbnail['file'] == $image['file']) { unset($page['thumbnails'][$idx]); } } $user['community_usage'] = community_get_user_limits($user['id']); if ($user['community_usage']['storage'] <= $user_permissions['storage']) { // we stop the deletions break; } } } if ($user_permissions['nb_photos'] > 0 and $user['community_usage']['nb_photos'] > $user_permissions['nb_photos']) { foreach ($images as $image) { array_push( $page['errors'], sprintf(l10n('Photo %s rejected.'), $image['file']) .' '.sprintf(l10n('Maximum number of photos reached (%u)'), $user_permissions['nb_photos']) ); delete_elements(array($image['id']), true); foreach ($page['thumbnails'] as $tn_idx => $thumbnail) { if ($thumbnail['file'] == $image['file']) { unset($page['thumbnails'][$idx]); } } $user['community_usage'] = community_get_user_limits($user['id']); if ($user['community_usage']['nb_photos'] <= $user_permissions['nb_photos']) { // we stop the deletions break; } } } // reinitialize the informations to display on the result page $page['infos'] = array(); if (isset($_POST['set_photo_properties'])) { $data = array(); $data['name'] = $_POST['name']; $data['author'] = $_POST['author']; if ($conf['allow_html_descriptions']) { $data['comment'] = @$_POST['description']; } else { $data['comment'] = strip_tags(@$_POST['description']); } $updates = array(); foreach ($image_ids as $image_id) { $update = $data; $update['id'] = $image_id; array_push($updates, $update); } mass_updates( IMAGES_TABLE, array( 'primary' => array('id'), 'update' => array_diff(array_keys($updates[0]), array('id')) ), $updates ); } if (count($page['thumbnails']) > 0) { // $category_id is set in the photos_add_direct_process.inc.php included script $category_infos = get_cat_info($category_id); $category_name = get_cat_display_name($category_infos['upper_names']); array_push( $page['infos'], sprintf( l10n('%d photos uploaded into album "%s"'), count($page['thumbnails']), ''.$category_name.'' ) ); } // should the photos be moderated? // // if one of the user community permissions is not moderated on the path // to gallery root, then the upload is not moderated. For example, if the // user is allowed to upload to events/parties with no admin moderation, // then he's not moderated when uploading in // events/parties/happyNewYear2011 $moderate = true; if (is_admin()) { $moderate = false; } else { $query = ' SELECT cp.category_id, c.uppercats FROM '.COMMUNITY_PERMISSIONS_TABLE.' AS cp LEFT JOIN '.CATEGORIES_TABLE.' AS c ON category_id = c.id WHERE cp.id IN ('.implode(',', $user_permissions['permission_ids']).') AND cp.moderated = \'false\' ;'; $result = pwg_query($query); while ($row = pwg_db_fetch_assoc($result)) { if (empty($row['category_id'])) { $moderate = false; } elseif (preg_match('/^'.$row['uppercats'].'(,|$)/', $category_infos['uppercats'])) { $moderate = false; } } } if ($moderate) { $inserts = array(); $query = ' SELECT id, date_available FROM '.IMAGES_TABLE.' WHERE id IN ('.implode(',', $image_ids).') ;'; $result = pwg_query($query); while ($row = pwg_db_fetch_assoc($result)) { array_push( $inserts, array( 'image_id' => $row['id'], 'added_on' => $row['date_available'], 'state' => 'moderation_pending', ) ); } if (count($inserts) > 0) { mass_inserts( COMMUNITY_PENDINGS_TABLE, array_keys($inserts[0]), $inserts ); // find the url to the medium size $page['thumbnails'] = array(); $query = ' SELECT * FROM '.IMAGES_TABLE.' WHERE id IN ('.implode(',', $image_ids).') ;'; $result = pwg_query($query); while ($row = pwg_db_fetch_assoc($result)) { $src_image = new SrcImage($row); $page['thumbnails'][] = array( 'file' => $row['file'], 'src' => DerivativeImage::url(IMG_THUMB, $src_image), 'title' => $row['name'], 'link' => $image_url = DerivativeImage::url(IMG_MEDIUM, $src_image), 'lightbox' => true, ); } array_push( $page['infos'], l10n('Your photos are waiting for validation, administrators have been notified') ); } } else { // the level of a user upload photo with no moderation is 0 $query = ' UPDATE '.IMAGES_TABLE.' SET level = 0 WHERE id IN ('.implode(',', $image_ids).') ;'; pwg_query($query); // the link on thumbnail must go to picture.php foreach ($page['thumbnails'] as $idx => $thumbnail) { if (preg_match('/image_id=(\d+)/', $thumbnail['link'], $matches)) { $page['thumbnails'][$idx]['link'] = make_picture_url( array( 'image_id' => $matches[1], 'image_file' => $thumbnail['file'], 'category' => $category_infos, ) ); } } } invalidate_user_cache(); if (count($page['thumbnails'])) { // let's notify administrators include_once(PHPWG_ROOT_PATH.'include/functions_mail.inc.php'); $keyargs_content = array( get_l10n_args('Hi administrators,', ''), get_l10n_args('', ''), get_l10n_args('Album: %s', get_cat_display_name($category_infos['upper_names'], null, false)), get_l10n_args('User: %s', $user['username']), get_l10n_args('Email: %s', $user['email']), ); if ($moderate) { $keyargs_content[] = get_l10n_args('', ''); array_push( $keyargs_content, get_l10n_args( 'Validation page: %s', get_absolute_root_url().'admin.php?page=plugin-community-pendings' ) ); } pwg_mail_notification_admins( get_l10n_args('%d photos uploaded by %s', array(count($image_ids), $user['username'])), $keyargs_content, false ); } } // +-----------------------------------------------------------------------+ // | prepare form | // +-----------------------------------------------------------------------+ $template->set_filenames(array('add_photos' => dirname(__FILE__).'/add_photos.tpl')); include_once(PHPWG_ROOT_PATH.'admin/include/photos_add_direct_prepare.inc.php'); $quota_available = array( 'summary' => array(), 'details' => array(), ); // there is a limit on storage for this user if ($user_permissions['storage'] > 0) { $remaining_storage = $user_permissions['storage'] - $user['community_usage']['storage']; if ($remaining_storage <= 0) { echo 'limit storage reached
'; // limit reached $setup_errors[] = sprintf( l10n('Disk usage quota reached (%uMB)'), $user_permissions['storage'] ); } else { $quota_available['summary'][] = $remaining_storage.'MB'; $quota_available['details'][] = sprintf( l10n('%s out of %s'), $remaining_storage.'MB', $user_permissions['storage'] ); $template->assign( array( 'limit_storage' => $remaining_storage*1024*1024, 'limit_storage_total_mb' => $user_permissions['storage'], ) ); } } // there is a limit on number of photos for this user if ($user_permissions['nb_photos'] > 0) { $remaining_nb_photos = $user_permissions['nb_photos'] - $user['community_usage']['nb_photos']; if ($remaining_nb_photos <= 0) { echo 'limit nb_photos reached
'; // limit reached $setup_errors[] = sprintf( l10n('Maximum number of photos reached (%u)'), $user_permissions['nb_photos'] ); } else { $quota_available['summary'][] = l10n_dec('%d photo', '%d photos', $remaining_nb_photos); $quota_available['details'][] = sprintf( l10n('%s out of %s'), l10n_dec('%d photo', '%d photos', $remaining_nb_photos), $user_permissions['nb_photos'] ); $template->assign('limit_nb_photos', $remaining_nb_photos); } } if (count($quota_available['details']) > 0) { $template->assign( array( 'quota_summary' => sprintf( l10n('Available %s.'), implode(', ', $quota_available['summary']) ), 'quota_details' => sprintf( l10n('Available quota %s.'), implode(', ', $quota_available['details']) ), ) ); } $template->assign( array( 'setup_errors'=> $setup_errors, ) ); // we have to change the list of uploadable albums $upload_categories = $user_permissions['upload_categories']; if (count($upload_categories) == 0) { $upload_categories = array(-1); } $query = ' SELECT id,name,uppercats,global_rank FROM '.CATEGORIES_TABLE.' WHERE id IN ('.implode(',', $upload_categories).') ;'; display_select_cat_wrapper( $query, $selected_category, 'category_options' ); $create_subcategories = false; if ($user_permissions['create_whole_gallery'] or count($user_permissions['create_categories']) > 0) { $create_subcategories = true; } $create_categories = $user_permissions['create_categories']; if (count($user_permissions['create_categories']) == 0) { $create_categories = array(-1); } $query = ' SELECT id,name,uppercats,global_rank FROM '.CATEGORIES_TABLE.' WHERE id IN ('.implode(',', $create_categories).') ;'; display_select_cat_wrapper( $query, $selected_category, 'category_parent_options' ); $template->assign( array( 'create_subcategories' => $create_subcategories, 'create_whole_gallery' => $user_permissions['create_whole_gallery'], ) ); if (isset($conf['community_ask_for_properties']) and $conf['community_ask_for_properties']) { $template->assign( array( 'community_ask_for_properties' => true, ) ); } // +-----------------------------------------------------------------------+ // | display page | // +-----------------------------------------------------------------------+ if (count($page['errors']) != 0) { $template->assign('errors', $page['errors']); } if (count($page['infos']) != 0) { $template->assign('infos', $page['infos']); } $title = l10n('Upload Photos'); $page['body_id'] = 'theUploadPage'; $template->assign_var_from_handle('PLUGIN_INDEX_CONTENT_BEGIN', 'add_photos'); $template->clear_assign(array('U_MODE_POSTED', 'U_MODE_CREATED')); $template->assign( array( 'TITLE' => ''.l10n('Home').''.$conf['level_separator'].$title, ) ); ?>