Skip to content

Commit

Permalink
Merge branch 'hotfix/1.2.2'
Browse files Browse the repository at this point in the history
  • Loading branch information
abrain committed Apr 10, 2016
2 parents ba9682e + 4674aae commit 79464de
Show file tree
Hide file tree
Showing 16 changed files with 548 additions and 32 deletions.
2 changes: 2 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ env:
- WP_VERSION=4.2.7 WP_MULTISITE=0
- WP_VERSION=4.3.3 WP_MULTISITE=0
- WP_VERSION=4.4.2 WP_MULTISITE=0
- WP_VERSION=nightly WP_MULTISITE=0

matrix:
exclude:
Expand All @@ -43,6 +44,7 @@ matrix:
env: WP_VERSION=4.2.7 WP_MULTISITE=0
allow_failures:
- php: hhvm
- env: WP_VERSION=nightly WP_MULTISITE=0
fast_finish: true

before_script:
Expand Down
32 changes: 28 additions & 4 deletions src/Frontend/ReportList.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,13 @@ class ReportList
*/
private $columns;

/**
* Gibt an, ob die Tabelle in kompakter Form, also ohne Trennung zwischen den Jahren angezeigt werden soll
*
* @var bool
*/
private $compact;

/**
* Array mit Spalten-IDs, die nicht mit einem Link zum Einsatzbericht versehen werden dürfen
*
Expand Down Expand Up @@ -86,6 +93,13 @@ class ReportList
*/
private static $settings;

/**
* Gibt an, ob oberhalb einer Tabelle die Überschrift mit der Jahreszahl angezeigt werden soll
*
* @var bool
*/
private $showHeading;

/**
* Gibt an, ob nach jedem Monat eine Trennung eingefügt werden soll
*
Expand Down Expand Up @@ -142,11 +156,14 @@ private function constructList($reports, $args)
'linkToAddForces' => $this->options->getBoolOption('einsatzvw_list_ext_link'),
'columnsWithLink' => array('title'),
'linkEmptyReports' => true,
'showHeading' => true,
'compact' => false,
);
$parsedArgs = wp_parse_args($args, $defaults);

// Variablen setzen
$this->splitMonths = (true === $parsedArgs['splitMonths']);
$this->compact = (bool) $parsedArgs['compact'];
$this->splitMonths = (bool) $parsedArgs['splitMonths'] && !$this->compact;
$this->columns = $this->utilities->sanitizeColumnsArray($parsedArgs['columns']);
$this->numberOfColumns = count($this->columns);
$this->linkToVehicles = (true === $parsedArgs['linkToVehicles']);
Expand All @@ -156,21 +173,26 @@ private function constructList($reports, $args)
$this->columnsWithLink = $this->utilities->sanitizeColumnsArray($this->columnsWithLink);
}
$this->linkEmptyReports = (true === $parsedArgs['linkEmptyReports']);
$this->showHeading = (bool) $parsedArgs['showHeading'];

// Berichte abarbeiten
$currentYear = null;
$currentMonth = null;
$previousYear = null;
$previousMonth = null;
$monthlyCounter = 0;
if ($this->compact) {
$this->beginTable(false);
$this->insertTableHeader();
}
/** @var IncidentReport $report */
foreach ($reports as $report) {
$timeOfAlerting = $report->getTimeOfAlerting();
$currentYear = intval($timeOfAlerting->format('Y'));
$currentMonth = intval($timeOfAlerting->format('m'));

// Ein neues Jahr beginnt
if ($currentYear != $previousYear) {
if (!$this->compact && $currentYear != $previousYear) {
// Wenn mindestens schon ein Jahr ausgegeben wurde
if ($previousYear != null) {
$previousMonth = null;
Expand Down Expand Up @@ -236,11 +258,13 @@ public function printList($reports, $args)
/**
* Beginnt eine neue Tabelle für ein bestimmtes Jahr
*
* @param int $year Das Kalenderjahr für die Überschrift
* @param bool|int $year Das Kalenderjahr für die Überschrift oder false um keine Überschrift auszugeben
*/
private function beginTable($year)
{
$this->string .= '<h2>Eins&auml;tze '.$year.'</h2>';
if ($this->showHeading && $year !== false) {
$this->string .= '<h2>Eins&auml;tze '.$year.'</h2>';
}
$this->string .= '<table class="' . self::TABLECLASS . '"><tbody>';
}

Expand Down
20 changes: 19 additions & 1 deletion src/Model/IncidentReport.php
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,15 @@ public function getTimeOfAlerting()
return false;
}

$time = $this->post->post_date;
// Solange der Einsatzbericht ein Entwurf ist, wird die Alarmzeit in Postmeta vorgehalten
if ($this->isDraft()) {
$time = $this->getPostMeta('_einsatz_timeofalerting');
}

if (empty($time)) {
$time = $this->post->post_date;
}

return DateTime::createFromFormat('Y-m-d H:i:s', $time);
}

Expand Down Expand Up @@ -369,6 +377,16 @@ public function hasContent()
return !empty($this->post->post_content);
}

/**
* Gibt zurück, ob der Einsatzbericht noch im Entwurfsstadium ist
*
* @return bool
*/
private function isDraft()
{
return in_array($this->post->post_status, array('draft', 'pending', 'auto-draft'));
}

/**
* Gibt zurück, ob es sich um einen Fehlalarm handelte
*
Expand Down
37 changes: 24 additions & 13 deletions src/Util/Formatter.php
Original file line number Diff line number Diff line change
Expand Up @@ -79,30 +79,40 @@ private function format($post, $pattern, $tag)

switch ($tag) {
case '%title%':
return str_replace('%title%', get_the_title($post), $pattern);
$replace = get_the_title($post);
break;
case '%date%':
return str_replace('%date%', date_i18n($this->options->getDateFormat(), $timeOfAlerting->getTimestamp()), $pattern);
$replace = date_i18n($this->options->getDateFormat(), $timeOfAlerting->getTimestamp());
break;
case '%time%':
return str_replace('%time%', date_i18n($this->options->getTimeFormat(), $timeOfAlerting->getTimestamp()), $pattern);
$replace = date_i18n($this->options->getTimeFormat(), $timeOfAlerting->getTimestamp());
break;
case '%duration%':
return str_replace('%duration%', $this->utilities->getDurationString(Data::getDauer($incidentReport)), $pattern);
$replace = $this->utilities->getDurationString(Data::getDauer($incidentReport));
break;
case '%incidentType%':
return str_replace(
'%incidentType%',
$this->getTypeOfIncident($incidentReport, false, false, false),
$pattern
);
$replace = $this->getTypeOfIncident($incidentReport, false, false, false);
break;
case '%url%':
return str_replace('%url%', get_permalink($post->ID), $pattern);
$replace = get_permalink($post->ID);
break;
case '%location%':
return str_replace('%location%', $incidentReport->getLocation(), $pattern);
$replace = $incidentReport->getLocation();
break;
case '%feedUrl%':
return str_replace('%feedUrl%', get_post_type_archive_feed_link('einsatz'), $pattern);
$replace = get_post_type_archive_feed_link('einsatz');
break;
case '%number%':
return str_replace('%number%', $incidentReport->getNumber(), $pattern);
$replace = $incidentReport->getNumber();
break;
case '%seqNum%':
$replace = $incidentReport->getSequentialNumber();
break;
default:
return $pattern;
}

return str_replace($tag, $replace, $pattern);
}

/**
Expand All @@ -120,6 +130,7 @@ public function getTags()
'%location%' => __('Ort des Einsatzes', 'einsatzverwaltung'),
'%feedUrl%' => __('URL zum Feed', 'einsatzverwaltung'),
'%number%' => __('Einsatznummer', 'einsatzverwaltung'),
'%seqNum%' => 'Laufende Nummer',
);
}

Expand Down
5 changes: 4 additions & 1 deletion src/Widgets/RecentIncidents.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,10 @@ public function __construct()
parent::__construct(
'einsatzverwaltung_widget', // Base ID
'Letzte Eins&auml;tze', // Name
array('description' => __('Zeigt die neuesten Eins&auml;tze an.', 'einsatzverwaltung'),) // Args
array(
'description' => __('Zeigt die neuesten Eins&auml;tze an.', 'einsatzverwaltung'),
'customize_selective_refresh' => true,
) // Args
);
}

Expand Down
5 changes: 3 additions & 2 deletions src/Widgets/RecentIncidentsFormatted.php
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ class RecentIncidentsFormatted extends WP_Widget
'afterContent' => ''
);
private $allowedTagsPattern = array('%title%', '%date%', '%time%', '%location%', '%duration%', '%incidentType%',
'%url%', '%number%');
'%url%', '%number%', '%seqNum%');
private $allowedTagsAfter = array('%feedUrl%');

/**
Expand All @@ -120,7 +120,8 @@ public function __construct()
'Letzte Eins&auml;tze (eigenes Format)',
array(
'description' => __('Zeigt die neuesten Eins&auml;tze an.', 'einsatzverwaltung') . ' ' .
__('Das Aussehen kann vollst&auml;ndig mit eigenem HTML bestimmt werden.', 'einsatzverwaltung')
__('Das Aussehen kann vollst&auml;ndig mit eigenem HTML bestimmt werden.', 'einsatzverwaltung'),
'customize_selective_refresh' => true,
)
);
}
Expand Down
2 changes: 1 addition & 1 deletion src/einsatzverwaltung-core.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
*/
class Core
{
const VERSION = '1.2.1';
const VERSION = '1.2.2';
const DB_VERSION = 10;

public $pluginFile;
Expand Down
19 changes: 14 additions & 5 deletions src/einsatzverwaltung-data.php
Original file line number Diff line number Diff line change
Expand Up @@ -147,18 +147,18 @@ public function savePostdata($postId, $post)
return;
}

// Schreibrechte prüfen
if (!current_user_can('edit_einsatzbericht', $postId)) {
return;
}

// Prüfen, ob Aufruf über das Formular erfolgt ist
if (!array_key_exists('einsatzverwaltung_nonce', $_POST) ||
!wp_verify_nonce($_POST['einsatzverwaltung_nonce'], 'save_einsatz_details')
) {
return;
}

// Schreibrechte prüfen
if (!current_user_can('edit_einsatzbericht', $postId)) {
return;
}

$updateArgs = array();

// Alarmzeit validieren
Expand All @@ -168,6 +168,12 @@ public function savePostdata($postId, $post)
}
if (empty($alarmzeit)) {
$alarmzeit = date_create($post->post_date);
}

// Solange der Einsatzbericht ein Entwurf ist, soll kein Datum gesetzt werden (vgl. wp_update_post()).
if (in_array($post->post_status, array('draft', 'pending', 'auto-draft'))) {
// Wird bis zur Veröffentlichung in Postmeta zwischengespeichert.
update_post_meta($postId, '_einsatz_timeofalerting', date_format($alarmzeit, 'Y-m-d H:i:s'));
} else {
$updateArgs['post_date'] = date_format($alarmzeit, 'Y-m-d H:i:s');
$updateArgs['post_date_gmt'] = get_gmt_from_date($updateArgs['post_date']);
Expand Down Expand Up @@ -277,6 +283,9 @@ public function onPublish($postId, $post)
$this->utilities->removePostFromCategory($postId, $category);
}
}

// Zwischenspeicher wird nur in der Entwurfsphase benötigt
delete_post_meta($postId, '_einsatz_timeofalerting');
}

/**
Expand Down
6 changes: 6 additions & 0 deletions src/einsatzverwaltung-frontend.php
Original file line number Diff line number Diff line change
Expand Up @@ -319,6 +319,12 @@ public function addReportsToQuery($query)
} else {
$postTypes = array('post');
}

// Einsatzberichte nur zusammen mit Beiträgen abfragen
if (!in_array('post', $postTypes)) {
return;
}

$postTypes[] = 'einsatz';
$query->set('post_type', $postTypes);

Expand Down
9 changes: 7 additions & 2 deletions src/einsatzverwaltung-shortcodes.php
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,13 @@ public function einsatzliste($atts)

// Optionen auswerten
$rawOptions = array_map('trim', explode(',', $shortcodeParams['options']));
$possibleOptions = array('special', 'noLinkWithoutContent');
$possibleOptions = array('special', 'noLinkWithoutContent', 'noHeading', 'compact');
$filteredOptions = array_intersect($possibleOptions, $rawOptions);
$showOnlySpecialReports = in_array('special', $filteredOptions);
$linkEmptyReports = !in_array('noLinkWithoutContent', $filteredOptions);
$showHeading = !in_array('noHeading', $filteredOptions);
$compact = in_array('compact', $filteredOptions);

$columnsWithLink = explode(',', $shortcodeParams['link']);
if (in_array('none', $columnsWithLink)) {
$columnsWithLink = false;
Expand Down Expand Up @@ -101,7 +104,9 @@ public function einsatzliste($atts)
'splitMonths' => ($shortcodeParams['monatetrennen'] == 'ja'),
'columns' => $this->options->getEinsatzlisteEnabledColumns(),
'columnsWithLink' => $columnsWithLink,
'linkEmptyReports' => $linkEmptyReports
'linkEmptyReports' => $linkEmptyReports,
'showHeading' => $showHeading,
'compact' => $compact,
)
);
}
Expand Down
2 changes: 1 addition & 1 deletion src/einsatzverwaltung.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
Plugin Name: Einsatzverwaltung
Plugin URI: https://einsatzverwaltung.abrain.de
Description: Verwaltung und Darstellung von Einsatzberichten der Feuerwehr und anderer Hilfsorganisationen
Version: 1.2.1
Version: 1.2.2
Author: Andreas Brain
Author URI: https://www.abrain.de
License: GPLv2
Expand Down
21 changes: 19 additions & 2 deletions src/readme.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ Contributors: abrain
Donate link: https://einsatzverwaltung.abrain.de/unterstuetzen/
Tags: Feuerwehr, Einsatz, Rettung, Rettungsdienst, THW, HiOrg, Wasserwacht, Bergrettung
Requires at least: 3.7.0
Tested up to: 4.4
Stable tag: 1.2.1
Tested up to: 4.5
Stable tag: 1.2.2
License: GPLv2
License URI: http://www.gnu.org/licenses/gpl-2.0.html

Expand Down Expand Up @@ -70,6 +70,23 @@ Nein, mehr gibt es [hier](https://einsatzverwaltung.abrain.de/faq/).

== Changelog ==

= 1.2.2 =
Verbesserungen:

* Einsatzliste: Trennung zwischen den Kalenderjahren kann abgeschalten werden
* Einsatzliste: Jahres&uuml;berschrift kann ausgeblendet werden
* Widget Letzte Eins&auml;tze (eigenes Format): Neuer Tag f&uuml;r laufende Nummer
* Widgets unterst&uuml;tzen Selective Refresh (neues Feature in der Live-Vorschau)

Fehlerbehebungen:

* Einsatzberichte konnten im Frontend anderer Plugins auftauchen
* Alarmzeit wurde bei Entw&uuml;rfen falsch gespeichert

Sonstiges:

* Getestet mit WordPress 4.5

= 1.2.1 =
Verbesserungen:

Expand Down
Loading

0 comments on commit 79464de

Please sign in to comment.