0894c0fc77ac934e0e05ff8b733b4f9e8e2f9d01
[Packages/TYPO3.CMS.git] / typo3 / sysext / belog / Classes / ViewHelpers / FormatDetailsViewHelper.php
1 <?php
2 /***************************************************************
3 * Copyright notice
4 *
5 * (c) 2012 Christian Kuhn <lolli@schwarzbu.ch>
6 * All rights reserved
7 *
8 * This script is part of the TYPO3 project. The TYPO3 project is
9 * free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
13 *
14 * The GNU General Public License can be found at
15 * http://www.gnu.org/copyleft/gpl.html.
16 * A copy is found in the textfile GPL.txt and important notices to the license
17 * from the author is found in LICENSE.txt distributed with these scripts.
18 *
19 * This script is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 * GNU General Public License for more details.
23 *
24 * This copyright notice MUST APPEAR in all copies of the script!
25 ***************************************************************/
26
27 /**
28 * Create detail string from log entry
29 *
30 * @author Christian Kuhn <lolli@schwarzbu.ch>
31 * @package TYPO3
32 * @subpackage belog
33 */
34 class Tx_Belog_ViewHelpers_FormatDetailsViewHelper extends Tx_Fluid_Core_ViewHelper_AbstractViewHelper {
35 /**
36 * Create formatted detail string from log row.
37 *
38 * The method handles two properties of the model: details and logData
39 * Details is a string with possible %s placeholders, and logData an array
40 * with the substitutions.
41 * Furthermore, possible files in logData are stripped to their basename if
42 * the action logged was a file action
43 *
44 * This method was crafted from getDetails() of class t3lib_bedisplaylog.
45 *
46 * @param Tx_Belog_Domain_Model_LogEntry $logEntry
47 * @return string Formatted details
48 */
49 public function render(Tx_Belog_Domain_Model_LogEntry $logEntry) {
50 $detailString = $logEntry->getDetails();
51 $substitutes = $logEntry->getLogData();
52
53 // Strip pathes from file names if the log was a file action
54 if ($logEntry->getType() === 2) {
55 $substitutes = $this->stripPathFromFilenames($substitutes);
56 }
57
58 // Substitute
59 $detailString = vsprintf($detailString, $substitutes);
60
61 // Remove possible pending other %s
62 $detailString = str_replace('%s', '', $detailString);
63
64 return htmlspecialchars($detailString);
65 }
66
67 /**
68 * Strips path from array of file names
69 *
70 * @param array $files
71 * @return array
72 */
73 protected function stripPathFromFilenames(array $files = array()) {
74 foreach ($files as $key => $file) {
75 $files[$key] = basename($file);
76 }
77 return $files;
78 }
79 }
80 ?>