Skip to content

Commit

Permalink
Merge pull request #15 from code-sport/feat/shortcode_3g_status
Browse files Browse the repository at this point in the history
Feat/shortcode 3g status
  • Loading branch information
code-sport committed Jan 2, 2022
2 parents c0f131c + 6d8e1b9 commit b42678d
Show file tree
Hide file tree
Showing 9 changed files with 138 additions and 81 deletions.
4 changes: 4 additions & 0 deletions assets/css/cbse_user_covid19.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
.cbse-box table, .cbse-box td {
border: none;
padding: 0;
}
3 changes: 2 additions & 1 deletion course-booking-system-extension.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* Plugin Name: Course Booking System Extension
* Plugin URI: https://github.com/code-sport/course-booking-system-extension
* Description: Extension for Course Booking System
* Version: 0.3.5
* Version: 0.3.6
* Author: Code.Sport
* Author URI: https://github.com/code-sport/
* Text Domain: course-booking-system-extension
Expand Down Expand Up @@ -34,6 +34,7 @@
defined('ABSPATH') || exit;
define('CBSE_PLUGIN_BASENAME', plugin_basename(__FILE__));
const CBSE_LANGUAGE_DOMAIN = 'course-booking-system-extension';
const CBSE_PLUGIN_BASE_FILE = __FILE__;

CBSE\Logging::init(__FILE__);

Expand Down
2 changes: 1 addition & 1 deletion readme.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Donate link: https://www.paypal.com/donate?hosted_button_id=ZW6C88ATGA6QS
Requires at least: 5.8.1
Tested up to: 5.8.2
Requires PHP: 7.4
Stable tag: 0.3.5
Stable tag: 0.3.6
License: GPL v3
License URI: https://github.com/code-sport/course-booking-system-extension/blob/main/license.txt

Expand Down
2 changes: 1 addition & 1 deletion sonar-project.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ sonar.projectKey=code-sport_course-booking-system-extension
sonar.organization=codesport
# This is the name and version displayed in the SonarCloud UI.
#sonar.projectName=course-booking-system-extension
sonar.projectVersion=0.3.5
sonar.projectVersion=0.3.6
# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
#sonar.sources=.
# Encoding of the source code. Default is default system encoding
Expand Down
1 change: 1 addition & 0 deletions src/Ajax.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ public function __construct()
public function eventHeadCoursesEnqueue($hook)
{
global $post;
//TODO: https://wordpress.stackexchange.com/questions/165754/enqueue-scripts-styles-when-shortcode-is-present
if (
$post == null
||
Expand Down
94 changes: 72 additions & 22 deletions src/Model/Covid19Status.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,22 +40,18 @@ public function getName(): string

public function isValid(DateTime $date, DateTime $courseDate): bool
{
if ($this->getValidFrom() != null)
if ($this->getValidFrom($date) != null)
{
$dateStart = clone $date;
$dateStart->add($this->getValidFrom());
$validStart = $dateStart <= $courseDate;
$validStart = Covid19Status::isAfterTime($courseDate, $this->getValidFrom($date));
}
else
{
$validStart = true;
}

if ($this->getValidTo() != null)
if ($this->getValidTo($date) != null)
{
$dateEnd = clone $date;
$dateEnd->add($this->getValidTo());
$validEnd = $courseDate <= $dateEnd;
$validEnd = Covid19Status::isInTime($courseDate, $this->getValidTo($date));
}
else
{
Expand All @@ -66,42 +62,96 @@ public function isValid(DateTime $date, DateTime $courseDate): bool
}

/**
* @return DateInterval
* @param DateTime $date
*
* @return DateTime|null
*/
public function getValidFrom(): ?DateInterval
public function getValidFrom(DateTime $date): ?DateTime
{
return $this->validFrom;
if ($this->validFrom)
{
$dateReturn = clone $date;
$dateReturn->add($this->validFrom);
return $dateReturn;
}
return null;
}

public static function isAfterTime(DateTime $timeCheck, DateTime $afterTime): bool
{
return $afterTime < $timeCheck;
}

/**
* @return DateInterval
* @param DateTime $date
*
* @return DateTime|null
*/
public function getValidTo(): ?DateInterval
public function getValidTo(DateTime $date): ?DateTime
{
if ($this->validTo)
{
$dateReturn = clone $date;
$dateReturn->add($this->validTo);
return $dateReturn;
}
return null;
}

public static function isInTime(DateTime $timeCheck, DateTime $dateEnd): bool
{
return $timeCheck <= $dateEnd;
}

public function getValidFromFormatted(DateTime $date): string
{
if ($this->getValidFrom($date))
{
return $this->getValidFrom($date)->format(get_option('date_format'));
}
return '';
}

public function getValidToFormatted(DateTime $date): string
{
return $this->validTo;
if ($this->getValidTo($date))
{
return $this->getValidTo($date)->format(get_option('date_format'));
}
return '';
}

/**
* @param DateTime $date
* @param DateTime $courseDate
*
* @return bool
*/
public function isPlusStatus(DateTime $date, DateTime $courseDate): bool
{
return ($this->getPlusValidTo() != null)
&& Covid19Status::isInUpToInterval($date, $this->getPlusValidTo(), $courseDate);
return ($this->getPlusValidTo($date) != null) && Covid19Status::isInTime($courseDate, $this->getPlusValidTo($date));
}

/**
* @return DateInterval|null
*/
public function getPlusValidTo(): ?DateInterval
public function getPlusValidTo(DateTime $date): ?DateTime
{
return $this->plusValidTo;
if ($this->plusValidTo)
{
$dateReturn = clone $date;
$dateReturn->add($this->plusValidTo);
return $dateReturn;
}
return null;
}

public static function isInUpToInterval(DateTime $dateCertificate, DateInterval $param, DateTime $courseDate): bool
public function getPlusValidToFormatted(DateTime $date): string
{
$dateEnd = clone $dateCertificate;
$dateEnd->add($param);
return $courseDate < $dateEnd;
if ($this->getPlusValidTo($date))
{
return $this->getPlusValidTo($date)->format(get_option('date_format'));
}
return '';
}
}
2 changes: 1 addition & 1 deletion src/Shortcodes/ShortcodeOverviewForCourseHead.php
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ private function getCoaches(): array

public function addScripts()
{
wp_register_style('cbse_event_head_courses_style', plugins_url('../assets/css/cbse_event_head_courses.css', __FILE__));
wp_register_style('cbse_event_head_courses_style', plugins_url('./assets/css/cbse_event_head_courses.css', CBSE_PLUGIN_BASE_FILE));
}

/**
Expand Down
57 changes: 42 additions & 15 deletions src/Shortcodes/ShortcodeUserCovid19Status.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ private function __construct()
private function init()
{
add_shortcode('cbse_user_covid19_status', array($this, "showShortcode"));
add_action('wp_enqueue_scripts', array($this, "addScripts"));
}

/**
Expand All @@ -42,6 +43,11 @@ public static function getInstance(): ShortcodeUserCovid19Status
return ShortcodeUserCovid19Status::$instance;
}

public function addScripts()
{
wp_register_style('cbse_user_covid19_status_style', plugins_url('./assets/css/cbse_user_covid19.css', CBSE_PLUGIN_BASE_FILE));
}

/**
* prevent from being unserialized (which would create a second instance of it)
*/
Expand All @@ -61,34 +67,25 @@ public function __wakeup()
*/
public function showShortcode($atts = [], $content = null, $tag = '')
{
wp_enqueue_style('cbse_user_covid19_status_style');

// start box
$o = '<div class="cbse-box">';

if (is_user_logged_in())
{
$userCovid19Status = new UserCovid19Status(get_current_user_id(), new DateTime('now'));
$covid19Status = $userCovid19Status->getStatus();
$covid19StatusDate = $userCovid19Status->getDateFormatted();
$now = new DateTime('now');
$userCovid19Status = new UserCovid19Status(get_current_user_id(), $now);
$covid19Status = $userCovid19Status->getStatus()->getName();

if (empty($covid19Status))
{
$covid19Status = 'unknown';
}

$o .= '<p>';
switch ($covid19Status)
{
case 'tested':
case 'unknown':
$massage = __('Your deposited Covid-19-Status is %s.', CBSE_LANGUAGE_DOMAIN);
$o .= wp_sprintf($massage, $covid19Status);
break;
default:
$massage = __('Your deposited Covid-19-Status is %s from %s.', CBSE_LANGUAGE_DOMAIN);
$o .= wp_sprintf($massage, $covid19Status, $covid19StatusDate);
}

$message = __('Your deposited Covid-19-Status is %s.', CBSE_LANGUAGE_DOMAIN);
$o .= wp_sprintf($message, $covid19Status);
$o .= '</p>';

if (!$userCovid19Status->isValid())
Expand All @@ -97,6 +94,36 @@ public function showShortcode($atts = [], $content = null, $tag = '')
$o .= __('Your status is invalid. Please check it and renew it.', CBSE_LANGUAGE_DOMAIN);
$o .= '</p>';
}
$o .= '<table>';
if (!empty($userCovid19Status->getDateFormatted()))
{
$o .= '<tr>';
$o .= '<td>' . __('Status date', CBSE_LANGUAGE_DOMAIN) . '</td>';
$o .= '<td>' . $userCovid19Status->getDateFormatted() . '</td>';
$o .= '</tr>';
}
if (!empty($userCovid19Status->getStatus()->getValidFromFormatted($now)))
{
$o .= '<tr>';
$o .= '<td>' . __('Valid from', CBSE_LANGUAGE_DOMAIN) . '</td>';
$o .= '<td>' . $userCovid19Status->getStatus()->getValidFromFormatted($now) . '</td>';
$o .= '</tr>';
}
if (!empty($userCovid19Status->getStatus()->getValidToFormatted($now)))
{
$o .= '<tr>';
$o .= '<td>' . __('Valid to', CBSE_LANGUAGE_DOMAIN) . '</td>';
$o .= '<td>' . $userCovid19Status->getStatus()->getValidToFormatted($now) . '</td>';
$o .= '</tr>';
}
if (!empty($userCovid19Status->getStatus()->getPlusValidToFormatted($now)))
{
$o .= '<tr>';
$o .= '<td>' . __('Plus valid to', CBSE_LANGUAGE_DOMAIN) . '</td>';
$o .= '<td>' . $userCovid19Status->getStatus()->getPlusValidToFormatted($now) . '</td>';
$o .= '</tr>';
}
$o .= '</table>';
}

// enclosing tags
Expand Down
54 changes: 14 additions & 40 deletions src/UserCovid19Status.php
Original file line number Diff line number Diff line change
Expand Up @@ -36,40 +36,16 @@ private function status(string $userStatus)
$statusTemp = null;
break;
case 'tested';
$statusTemp = new Covid19Status(
'tested',
__('tested', CBSE_LANGUAGE_DOMAIN),
null,
new DateInterval('PT24H'),
null
);
$statusTemp = new Covid19Status('tested', __('tested', CBSE_LANGUAGE_DOMAIN), null, new DateInterval('PT24H'), null);
break;
case 'vaccinated';
$statusTemp = new Covid19Status(
'vaccinated',
__('vaccinated', CBSE_LANGUAGE_DOMAIN),
$this->loadCovid19StatusSetting('vaccinated_status_valid_from'),
$this->loadCovid19StatusSetting('vaccinated_status_valid_to'),
$this->loadCovid19StatusSetting('vaccinated_plus_status_valid_to')
);
$statusTemp = new Covid19Status('vaccinated', __('vaccinated', CBSE_LANGUAGE_DOMAIN), $this->loadCovid19StatusSetting('vaccinated_status_valid_from'), $this->loadCovid19StatusSetting('vaccinated_status_valid_to'), $this->loadCovid19StatusSetting('vaccinated_plus_status_valid_to'));
break;
case 'vaccinated_updated';
$statusTemp = new Covid19Status(
'vaccinated_updated',
__('booster vaccinated', CBSE_LANGUAGE_DOMAIN),
$this->loadCovid19StatusSetting('vaccinated_updated_status_valid_from'),
$this->loadCovid19StatusSetting('vaccinated_updated_status_valid_to'),
$this->loadCovid19StatusSetting('vaccinated_updated_plus_status_valid_to')
);
$statusTemp = new Covid19Status('vaccinated_updated', __('booster vaccinated', CBSE_LANGUAGE_DOMAIN), $this->loadCovid19StatusSetting('vaccinated_updated_status_valid_from'), $this->loadCovid19StatusSetting('vaccinated_updated_status_valid_to'), $this->loadCovid19StatusSetting('vaccinated_updated_plus_status_valid_to'));
break;
case 'recovered';
$statusTemp = new Covid19Status(
'recovered',
__('recovered', CBSE_LANGUAGE_DOMAIN),
$this->loadCovid19StatusSetting('recovered_status_valid_from'),
$this->loadCovid19StatusSetting('recovered_status_valid_to'),
$this->loadCovid19StatusSetting('recovered_plus_status_valid_to')
);
$statusTemp = new Covid19Status('recovered', __('recovered', CBSE_LANGUAGE_DOMAIN), $this->loadCovid19StatusSetting('recovered_status_valid_from'), $this->loadCovid19StatusSetting('recovered_status_valid_to'), $this->loadCovid19StatusSetting('recovered_plus_status_valid_to'));
break;
}

Expand All @@ -96,8 +72,7 @@ private function loadCovid19StatusSetting(string $setting): ?DateInterval

public function getStatusOrAll(): string
{
return $this->getValidatedStatus() ??
static::getAll();
return $this->getValidatedStatus() ?? static::getAll();
}

private function getValidatedStatus($default = null): ?string
Expand Down Expand Up @@ -128,19 +103,10 @@ private function isPlusStatus(): bool

public static function getAll($separator = '|'): string
{
$all = array(
__('tested', CBSE_LANGUAGE_DOMAIN),
__('vaccinated', CBSE_LANGUAGE_DOMAIN),
__('recovered', CBSE_LANGUAGE_DOMAIN)
);
$all = array(__('tested', CBSE_LANGUAGE_DOMAIN), __('vaccinated', CBSE_LANGUAGE_DOMAIN), __('recovered', CBSE_LANGUAGE_DOMAIN));
return implode($separator, $all);
}

public function getStatus(): string
{
return $this->status->getName();
}

public function getStatusOrEmpty(): string
{
return $this->getValidatedStatus('');
Expand Down Expand Up @@ -178,4 +144,12 @@ public function getFlags(): ?string

return implode(',', $flags);
}

/**
* @return Covid19Status|null
*/
public function getStatus(): ?Covid19Status
{
return $this->status;
}
}

0 comments on commit b42678d

Please sign in to comment.