foreach ($queries as $query) { $db->query($query) || trigger_error('Erreur sql lors de la restauration', ERROR); fake_header(true); } $db->commit(); $output->message('Success_restore'); } $output->addHiddenField('sessid', $session->session_id); $output->set_filenames(array('tool_body' => 'restore_body.tpl')); $output->assign_vars(array('L_TITLE_RESTORE' => $lang['Title']['restore'], 'L_EXPLAIN_RESTORE' => nl2br($lang['Explain']['restore']), 'L_FILE_LOCAL' => $lang['File_local'], 'L_VALID_BUTTON' => $lang['Button']['valid'], 'L_RESET_BUTTON' => $lang['Button']['reset'], 'S_HIDDEN_FIELDS' => $output->getHiddenFields(), 'S_ENCTYPE' => FILE_UPLOADS_ON ? 'multipart/form-data' : 'application/x-www-form-urlencoded')); if (FILE_UPLOADS_ON) { // // L'upload est disponible sur le serveur // Affichage du champ file pour importation // $output->assign_block_vars('upload_file', array('L_FILE_UPLOAD' => $lang['File_upload_restore'], 'L_MAXIMUM_SIZE' => sprintf($lang['Maximum_size'], formateSize(MAX_FILE_SIZE)), 'MAX_FILE_SIZE' => MAX_FILE_SIZE)); } $output->assign_var_from_handle('TOOL_BODY', 'tool_body'); break; case 'generator': if (isset($_POST['generate'])) { $url_form = !empty($_POST['url_form']) ? trim($_POST['url_form']) : ''; $code_html = "<form method=\"post\" action=\"" . htmlspecialchars($url_form) . "\">\n"; $code_html .= $lang['Email_address'] . " : <input type=\"text\" name=\"email\" maxlength=\"100\" /> \n"; if ($listdata['liste_format'] == FORMAT_MULTIPLE) { $code_html .= $lang['Format'] . " : <select name=\"format\">\n"; $code_html .= "<option value=\"" . FORMAT_TEXTE . "\">TXT</option>\n"; $code_html .= "<option value=\"" . FORMAT_HTML . "\">HTML</option>\n"; $code_html .= "</select>\n"; } else { $code_html .= "<input type=\"hidden\" name=\"format\" value=\"{$listdata['liste_format']}\" />\n";
if ($num_inscrits == 1) { $l_num_inscrits = sprintf($lang['Registered_subscriber'], wa_number_format($num_inscrits / $days)); } else { $l_num_inscrits = $lang['No_registered_subscriber']; } } if ($num_temp > 1) { $l_num_temp = sprintf($lang['Tmp_subscribers'], $num_temp); } else { if ($num_temp == 1) { $l_num_temp = $lang['Tmp_subscriber']; } else { $l_num_temp = $lang['No_tmp_subscriber']; } } $output->build_listbox(AUTH_VIEW, false, './view.php?mode=liste'); $output->page_header(); $output->set_filenames(array('body' => 'index_body.tpl')); if ($num_logs > 0) { if ($num_logs > 1) { $l_num_logs = sprintf($lang['Total_newsletters'], $num_logs, wa_number_format($num_logs / $month)); } else { $l_num_logs = sprintf($lang['Total_newsletter'], wa_number_format($num_logs / $month)); } $output->assign_block_vars('switch_last_newsletter', array('DATE_LAST_NEWSLETTER' => sprintf($lang['Last_newsletter'], convert_time($nl_config['date_format'], $last_log)))); } else { $l_num_logs = $lang['No_newsletter_sended']; } $output->assign_vars(array('TITLE_HOME' => $lang['Title']['accueil'], 'L_EXPLAIN' => nl2br($lang['Explain']['accueil']), 'L_DBSIZE' => $lang['Dbsize'], 'L_FILESIZE' => $lang['Total_Filesize'], 'REGISTERED_SUBSCRIBERS' => $l_num_inscrits, 'TEMP_SUBSCRIBERS' => $l_num_temp, 'NEWSLETTERS_SENDED' => $l_num_logs, 'DBSIZE' => is_numeric($dbsize) ? formateSize($dbsize) : $dbsize, 'FILESIZE' => formateSize($filesize))); $output->pparse('body'); $output->page_footer();
if ($listdata['liste_format'] != FORMAT_HTML) { $output->assign_block_vars('formulaire', array('L_TITLE' => $lang['Log_in_text'], 'L_EXPLAIN_BODY' => nl2br($lang['Explain']['text']), 'S_TEXTAREA_NAME' => 'body_text', 'S_BODY' => $body_text, 'S_FORMAT' => FORMAT_TEXTE)); } if ($listdata['liste_format'] != FORMAT_TEXTE) { $output->assign_block_vars('formulaire', array('L_TITLE' => $lang['Log_in_html'], 'L_EXPLAIN_BODY' => nl2br($lang['Explain']['html']), 'S_TEXTAREA_NAME' => 'body_html', 'S_BODY' => $body_html, 'S_FORMAT' => FORMAT_HTML)); } if ($auth->check_auth(AUTH_ATTACH, $listdata['liste_id'])) { $rowspan = 2; if (FILE_UPLOADS_ON) { $rowspan++; } if ($file_box != '') { $rowspan++; } $output->assign_block_vars('joined_files', array('L_TITLE_ADD_FILE' => $lang['Title']['join'], 'L_EXPLAIN_ADD_FILE' => nl2br($lang['Explain']['join']), 'L_ADD_FILE' => $lang['Join_file_to_log'], 'L_ADD_FILE_BUTTON' => $lang['Button']['add_file'], 'S_ROWSPAN' => $rowspan)); // // Si l'upload est autorisé, on affiche le champs type file // if (FILE_UPLOADS_ON) { $output->assign_block_vars('joined_files.upload_input', array('L_MAXIMUM_SIZE' => sprintf($lang['Maximum_size'], formateSize(MAX_FILE_SIZE)), 'MAX_FILE_SIZE' => MAX_FILE_SIZE)); } // // Box de sélection de fichiers existants // if ($file_box != '') { $output->assign_block_vars('joined_files.select_box', array('SELECT_BOX' => $file_box)); } $output->files_list($logdata); } $output->pparse('body'); $output->page_footer();
/** * Affichage des fichiers joints * * @param array $logdata Données du log concerné * @param integer $format Format du log visualisé (si dans view.php) * * @access public * @return boolean */ function files_list($logdata, $format = 0) { global $lang; $page_envoi = strstr(server_info('PHP_SELF'), 'envoi.php') ? true : false; $body_size = strlen($logdata['log_body_text']) + strlen($logdata['log_body_html']); $total_size = 1024; // ~ 1024 correspond au poids de base d'un email (en-têtes) $total_size += $body_size > 0 ? $body_size / 2 : 0; $num_files = count($logdata['joined_files']); if ($num_files == 0) { return false; } $test_ary = array(); for ($i = 0; $i < $num_files; $i++) { $total_size += $logdata['joined_files'][$i]['file_size']; $test_files[] = $logdata['joined_files'][$i]['file_real_name']; } if ($format == FORMAT_HTML && hasCidReferences($logdata['log_body_html'], $refs) > 0) { $embed_files = array_intersect($test_files, $refs); if ($num_files - count($embed_files) == 0) { return false; } } else { $embed_files = array(); } $this->set_filenames(array('files_box_body' => 'files_box.tpl')); $this->assign_vars(array('L_FILENAME' => $lang['Filename'], 'L_FILESIZE' => $lang['Filesize'], 'L_TOTAL_LOG_SIZE' => $lang['Total_log_size'], 'TOTAL_LOG_SIZE' => formateSize($total_size), 'S_ROWSPAN' => $page_envoi ? '4' : '3')); if ($page_envoi == true) { $this->assign_block_vars('del_column', array()); $this->assign_block_vars('joined_files.files_box', array('L_TITLE_JOINED_FILES' => $lang['Title']['joined_files'], 'L_DEL_FILE_BUTTON' => $lang['Button']['del_file'])); $u_download = './envoi.php?mode=download&fid=%d'; } else { $this->assign_block_vars('files_box', array('L_TITLE_JOINED_FILES' => $lang['Title']['joined_files'])); $u_download = './view.php?mode=download&fid=%d'; } $u_show = '../options/show.php?fid=%d'; for ($i = 0; $i < $num_files; $i++) { $filesize = $logdata['joined_files'][$i]['file_size']; $filename = $logdata['joined_files'][$i]['file_real_name']; $file_id = $logdata['joined_files'][$i]['file_id']; $mime_type = $logdata['joined_files'][$i]['file_mimetype']; // // On affiche pas dans la liste les fichiers incorporés dans // une newsletter au format HTML. // if ($format == FORMAT_HTML && in_array($filename, $embed_files)) { continue; } if (strpos($mime_type, 'image') === 0) { $s_show = '<a rel="show" href="' . sessid(sprintf($u_show, $file_id)) . '">'; $s_show .= '<img src="../templates/images/icon_loupe.png" width="14" height="14" alt="voir" title="' . $lang['Show'] . '" />'; $s_show .= '</a>'; } else { $s_show = ''; } $this->assign_block_vars('file_info', array('OFFSET' => $i + 1, 'FILENAME' => htmlspecialchars($filename), 'FILESIZE' => formateSize($filesize), 'S_SHOW' => $s_show, 'U_DOWNLOAD' => sessid(sprintf($u_download, $file_id)))); if ($page_envoi) { $this->assign_block_vars('file_info.delete_options', array('FILE_ID' => $file_id)); } } $this->assign_var_from_handle('JOINED_FILES_BOX', 'files_box_body'); return true; }
/** * Ajoute une entrée pour le log courant avec l'identifiant d'un fichier existant * * @param integer $file_id Identifiant du fichier * @param integer $log_id Identifiant du log * @param boolean $error True si erreur * @param array $msg_error Tableau des messages d'erreur * * @access public * * @return void * @access public */ function use_file_exists($file_id, $log_id, &$error, &$msg_error) { global $db, $nl_config, $lang, $listdata; $sql = "SELECT jf.file_physical_name\n\t\t\tFROM " . JOINED_FILES_TABLE . " AS jf\n\t\t\t\tINNER JOIN " . LOG_TABLE . " AS l ON l.liste_id = {$listdata['liste_id']}\n\t\t\t\tINNER JOIN " . LOG_FILES_TABLE . " AS lf ON lf.file_id = jf.file_id\n\t\t\t\t\tAND lf.log_id = l.log_id\n\t\t\tWHERE jf.file_id = " . $file_id; if (!($result = $db->query($sql))) { trigger_error('Impossible de récupérer les données sur ce fichier', ERROR); } $physical_name = $result->column('file_physical_name'); if (!$physical_name) { $error = TRUE; $msg_error[] = sprintf($lang['Message']['File_not_exists'], ''); } if (!$error) { // // On verifie si le fichier est bien présent sur le serveur // $filesize = $this->joined_file_exists($physical_name, $error, $msg_error); } $total_size = 0; if (!$error && !$this->check_maxsize($log_id, $filesize, $total_size)) { $error = TRUE; $msg_error[] = sprintf($lang['Message']['weight_too_big'], formateSize($nl_config['max_filesize'] - $total_size)); } // // Insertion des données // if (!$error) { $sql = "INSERT INTO " . LOG_FILES_TABLE . " (log_id, file_id) \n\t\t\t\tVALUES({$log_id}, {$file_id})"; if (!$db->query($sql)) { trigger_error('Impossible d\'insérer la jointure dans la table log_files', ERROR); } } $this->quit(); }