add missing functions to proclass_theme.module
use \Drupal\block_content\BlockContentInterface;
use Drupal\taxonomy\Entity\Term;
/**
* Implements hook_theme_suggestions_HOOK_alter() for form templates.
* @param array $suggestions
* @param array $variables
*/
function proclass_theme_suggestions_block_alter(array &$suggestions, array $variables) {
// Block suggestions for custom block bundles.
if (isset($variables['elements']['content']['#block_content']) && $variables['elements']['content']['#block_content'] instanceof BlockContentInterface) {
array_splice($suggestions, 1, 0, 'block__bundle__' . $variables['elements']['content']['#block_content']->bundle());
}
}
// - Reg date in future - Coming Soon
// - Reg date passed seats avail greater zero - Enroll Now
// - Reg date passed no seats avail - Join Waitlist
function proclass_theme_preprocess_page(array &$variables) {
$node = \Drupal::routeMatch()->getParameter('node');
if ($node instanceof \Drupal\node\NodeInterface) {
if ($node->bundle() === 'proclass_programs') {
$variables['class_status'] = _class_status($node);
}
}
}
function proclass_theme_preprocess_node(array &$variables) {
$node = $variables['node'];
if ($node->bundle() === 'proclass_programs') {
$variables['class_status'] = _class_status($node);
}
}
function _class_status($node) {
if ($node->hasField('field_proclass_registrationopend') && !$node->get('field_proclass_registrationopend')->isEmpty()) {
$registration_date = $node->get('field_proclass_registrationopend')->first()->getValue()['value'];
$registration_date = new DateTime($registration_date);
$current_date = new DateTime();
}
if ($node->hasField('field_proclass_numberofseats') && !$node->get('field_proclass_numberofseats')->isEmpty()) {
$seats = $node->get('field_proclass_numberofseats')->first()->getValue();
}
if ($node->hasField('field_proclass_numberregistered') && !$node->get('field_proclass_numberregistered')->isEmpty()) {
$registered = $node->get('field_proclass_numberregistered')->first()->getValue();
}
$seats_left = $seats['value'] - $registered['value'];
$status = 'View Details';
// - Reg date in future - Coming Soon
if ($current_date < $registration_date) {
$status = 'Coming Soon';
// - Reg date passed no seats avail - Join Waitlist
} elseif ($seats_left < 1 && ($current_date >= $registration_date)) {
$status = 'Join Waitlist';
// - Reg date passed seats avail greater zero - Enroll Now
} elseif ($seats_left >= 1 && ($current_date >= $registration_date)) {
$status = 'Enroll Now';
}
return $status;
}