if _GET['concours'] ==> concours audit (with id) // if _GET['user_id'] ==> audit for a user // --> else ==> list concours to be audited if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!'); include_once(CONCOURS_PATH . 'admin/functions.inc.php'); global $template; if (isset($_POST['user_list'])) $user_id = $_POST['user_list']; else $user_id = 0; // echo "USER_ID=".$user_id; // Get the concours id if present if (isset($_GET['concours'])) { $concours_id = $_GET['concours']; // Get informations from base for concours_id $concours = new Concours($concours_id); // Get group authorized to participate $users = array(); // contain {id;username} or each $groups = $concours->concours_infos['groups']; $query = 'SELECT distinct(user_id), username FROM ' . USER_GROUP_TABLE .' INNER JOIN ' . USERS_TABLE .' ON id = user_id' .($groups != NULL ? ' WHERE group_id IN ('.$groups.')' : '') // = '.$groups : '') .' ORDER BY username ASC' .';'; // echo $query."\n"; $result = pwg_query($query); while ($row = mysql_fetch_assoc($result)) { array_push($users, $row); } // Add user list $template->append('user_list', array( 'ID' => '0', 'NAME' => l10n('all_users'), 'SELECTED' => ($user_id == 0 ? 'selected' : ''))); foreach ( $users as $userid ) //on parcours le tableau { $template->append('user_list', array( 'ID' => $userid['user_id'], 'NAME' => $userid['username'], 'SELECTED' => ($user_id == $userid['user_id'] ? 'selected' : ''))); } // Add the guest list (if coucours OK for guest) $ipguest = $concours->get_guest_list(); if ($concours->concours_infos['guest']) { foreach ( $ipguest as $i => $userid ) //on parcours le tableau { $template->append('user_list', array( 'ID' => 'G'.$i, //$userid['user_id'], 'NAME' => $userid, 'SELECTED' => ($user_id == 'G'.$i ? 'selected' : ''))); } } // Send concours info to template $template->assign( 'CONCOURS', array( 'ID' => $concours->concours_infos['id'], 'NAME' => $concours->concours_infos['name'], 'DESCR' => $concours->concours_infos['descr'], 'BEGIN_DATE' => $concours->concours_infos['begin_date'], 'END_DATE' => $concours->concours_infos['end_date'], 'METHOD' => l10n("concours_method".$concours->concours_infos['method']) )); // Step 1 : recover all the picture for the concours // Step 2 :For each picture, recover the global note, the number of vote, the actual rank (?), // Step 3 : Display theses informations // Get the nb of vote for the concours $nbvotes = $concours->nb_votes_by_img(); // Get all the users who have notes for the concours $query = 'SELECT distinct user_id, USER.username' .' FROM ' .CONCOURS_DATA_TABLE .' INNER JOIN ' . USERS_TABLE.' AS USER on USER.id = user_id' .' WHERE id_concours = '.$concours_id // Dont take the guest informations because .' AND user_id <> '.$conf['guest_id'] .' ORDER BY username ASC' .';'; $result = pwg_query($query); // For each user $user_list = array(); while ($row2 = mysql_fetch_assoc($result)) // Dont take the guest informations because // if ($row2['user_id'] != $conf['guest_id']) array_push($user_list, $row2); // Get criteria list and $criteria_list = ""; $firstcriterias = $concours->get_firstlevel_criterias($concours_id); $ident1 = 1; $criteria_number = 0; // total number of criterias foreach ($firstcriterias as $criteria) { // format (id:name) $criteria_list .= (strlen($criteria_list) ? "," : "") .$ident1.":".$criteria['name'] ."(id=".$criteria['criteria_id'].")"; // First wit sub criterias if ($concours->is_criterias_contains_sub($criteria['criteria_id'],$concours_id )) { $ident2 = 1; $secondcriterias = $concours->get_subcriterias($criteria['criteria_id'], $concours_id ); foreach ($secondcriterias as $subcriteria) { // format (id:name) $criteria_list .= (strlen($criteria_list) ? "," : "") .$ident1.".".$ident2 .":".$subcriteria['name']."(id=".$subcriteria['criteria_id'].")"; $ident2 ++; $criteria_number ++; } } else $criteria_number ++; $ident1++; } // Get images for all the selected cconcours $category = $concours->concours_infos['category']; $query = 'SELECT DISTINCT(img.id), img.name, img.file, img.path, img.tn_ext, img.author , ic.category_id, cat.name AS catname' //, conc.note' .' FROM ' . IMAGES_TABLE.' AS img' .' INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON img.id = ic.image_id' .' INNER JOIN '.CATEGORIES_TABLE.' AS cat ON ic.category_id = cat.id' // .' INNER JOIN '.CONCOURS_RESULT_TABLE.' AS conc ON conc.img_id = img.id' .' WHERE ic.category_id = '.$concours->concours_infos['category'] // .' ORDER by note DESC .';'; $result = pwg_query($query); // echo $query; $concours_img = array(); // Recover all pictures and informations (global note while ($row = mysql_fetch_assoc($result)) { // link on picture.php page set_make_full_url(); if ( isset($row['category_id']) & isset($row['catname']) ) { $url = duplicate_picture_url( array( 'image_id' => $row['id'], 'image_file' => $row['file'], 'category' => array( 'id' => $row['category_id'], 'name' => $row['catname'], 'permalink' => '' ) ), array('start') ); } else { $url = duplicate_picture_url( array( 'image_id' => $row['id'], 'image_file' => $row['file'] ), array('start') ); } unset_make_full_url(); // Get note (depending on the calling : global OR user) $user_note = array(); $globalnote = 0; // echo "USER=".$user_id."\n"; if (!is_numeric($user_id) OR $user_id != 0) // for user { // echo "USERNON0=".$user_id."\n"; $pos = strpos($user_id, 'G'); if ($pos === false) { $globalnote = $concours->get_img_globalnote_user($row['id'], $concours_id, $user_id); $user_note = $concours->get_img_note_user($row['id'], $concours_id, $user_id); } else { // echo "G...".substr($user_id, $pos+1)." = ".substr($user_id, $pos+1)."\n"; // echo "IPGUEST=".$ipguest[substr($user_id, $pos+1)]."\n"; $globalnote = $concours->get_img_globalnote_user($row['id'], $concours_id, $conf['guest_id'], $ipguest[substr($user_id, $pos+1)]); $user_note = $concours->get_img_note_user($row['id'], $concours_id, $conf['guest_id'], $ipguest[substr($user_id, $pos+1)]); } } elseif (is_numeric($user_id) AND $user_id == 0) // for user // global { // echo "USER00=".$user_id."\n"; foreach ($user_list as $i => $userid) $globalnote += $concours->get_img_globalnote_user($row['id'], null, $userid['user_id']); foreach ($ipguest as $i => $ipguestt) { $globalnote += $concours->get_img_globalnote_user($row['id'], null, $conf['guest_id'], $ipguestt); } } $concours_img[$row['id']] = array( 'img_id' => $row['id'], 'name' => $row['name'], 'author'=> $row['author'], 'file' => $row['file'], 'rang' => 0, 'thumb' => get_thumbnail_url($row), 'url' => $url, 'note' => $globalnote, 'moyenne' => (isset($nbvotes[$row['id']]) && $nbvotes[$row['id']] !=0 ? $globalnote/(int)$nbvotes[$row['id']] : 0), 'nbvotant' => isset($nbvotes[$row['id']]) ? $nbvotes[$row['id']] : 0 ); } /* foreach ($concours_img as $key => $value) { echo 'img_id => '.$concours_img[$key]['img_id'] .'author => '.$concours_img[$key]['author'] .'name => '.$concours_img[$key]['name'] .'file => '.$concours_img[$key]['file'] .'rang => '.$concours_img[$key]['rang'] .'thumb => '.$concours_img[$key]['thumb'] .'url => '.$concours_img[$key]['url'] .'note => '.$concours_img[$key]['note']; } */ // Ordre image by "note" or "moyenne" if ($concours->concours_infos['method'] == 1) // sum method $concours_img = array_sort($concours_img, 'note', false); elseif ($concours->concours_infos['method'] == 2) // moy method $concours_img = array_sort($concours_img, 'moyenne', false); $rang = 1; $previousNote = $previousMoy = 0; foreach ($concours_img as $key => $value) { // Check the exaequos if ($concours->my_config['check_exaequo']) { if ( ($concours->concours_infos['method'] == 1 // total AND ($concours_img[$key]['note'] == $previousNote)) OR ($concours->concours_infos['method'] == 2 // moyenne AND ($concours_img[$key]['moyenne'] == $previousMoy))) { $rang --; } } // echo "RANG=".$rang."\n"; $concours_img[$key]['rang'] = $rang; $template->append( 'concours_note', array( 'img_id' => $concours_img[$key]['img_id'], 'author' => $concours_img[$key]['author'], 'name' => $concours_img[$key]['name'], 'file' => $concours_img[$key]['file'], 'rang' => $concours_img[$key]['rang'], 'thumb' => $concours_img[$key]['thumb'], 'url' => $concours_img[$key]['url'], 'note' => $concours_img[$key]['note'], 'moyenne' => $concours_img[$key]['moyenne'], 'nbvotant' => $concours_img[$key]['nbvotant'] )); $rang++; $previousNote = $concours_img[$key]['note']; $previousMoy = $concours_img[$key]['moyenne']; } } if (isset($_POST['submit'])) { } $template->set_filename('plugin_admin_content', dirname(__FILE__) . '/template/audit.tpl'); $template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content'); // Function to sort the array // asc = false ==> descendant function array_sort($array, $key, $asc=true) { foreach ($array as $i => $o) { $sort_values[$i] = $array[$i][$key]; } if ($asc) asort ($sort_values); else arsort ($sort_values); reset ($sort_values); while (list ($arr_key, $arr_val) = each ($sort_values)) { $sorted_arr[] = $array[$arr_key]; } unset($array); return $sorted_arr; } ?>