You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

232 lines
6.3 KiB

<?php
/**
* Holds parent event schedule id
*/
define('eventScheduleId', 'event_schedule_id');
/**
* Holds table event_schedule_moderation_settings
*/
define('tableEventScheduleId', 'event_schedule_moderation_setting');
/**
* Holds insert command for table event_schedule_moderation_setting
*/
define('INSERT_SETTINGS', 1);
/**
* Holds update command for table event_schedule_moderation_setting
*/
define('UPDATE_SETTINGS', 2);
/**
* insert new moderation setting for new event schedule created
*
* @param integer $event_schedule_id = event schedule id
* @param array $moderationVariables = selected post variable values
* @return void
* access public function
*/
function addEventScheduleModerationForm($event_schedule_id, $moderationVariables)
{
$settings = [
'event_schedule_id' => $event_schedule_id,
'isInModeration' => setDefaultIfPostKeyIsNotPresent('moderationSwitchBtn', $moderationVariables),
'flexibleModeActivated' => setDefaultIfPostKeyIsNotPresent('moderationSwitchFlexibleBtn', $moderationVariables),
'flexibleModeApplied' => 0,
'flexibleModeIsAgreed' => setDefaultIfPostKeyIsNotPresent('flexAgreed', $moderationVariables),
'flexibleModeHours' => $moderationVariables['flex_no_of_hours'],
'flexibleModeNumberToLiftModeration' => $moderationVariables['flex_places_to_lift_moderation'],
'author' => $_SESSION["logged_in"]["user_id"]
];
//save to moderation table
saveModerationSettings(
$event_schedule_id,
$settings,
INSERT_SETTINGS
);
}
/**
* Check if posts key are exist and method is a post action
*
* @param null $post = any post form names
* @param null $key = post keys
* @return boolean
* access private function
*/
function isAvailablePostKey($post, $key) : bool
{
//Ensure that post values are present
$post = $post ?? $_POST;
//Check if request method is post and check if posts keys are exist
return ($_SERVER['REQUEST_METHOD'] == 'POST' && array_key_exists($key, $post));
}
/**
* Set default for post keys that are note present
*
* @param null $key = post variable key
* @param null $post = form post array
* @return void
* access private function
*/
function setDefaultIfPostKeyIsNotPresent($key = null, $post = null) : int
{
//Ensure that post values are present
$post = $post ?? $_POST;
//Ensure that post will return defaults if keys are not present
if (isAvailablePostKey($post, $key) && ($post[$key] == "on")) {
return 1;
} else {
// force agree to moderation
return 1;
}
}
/**
* Save function moderations settings
*
* @param integer $eventScheduleId = event schedule id
* @param array $settings = form moderation array
* @param integer $action = insert or update command
* @return void
* access public member function
*/
function saveModerationSettings($eventScheduleId, $settings = [], $action)
{
/**
* Ensure that event schedule id is properly set
*/
if (notSet($eventScheduleId)) {
return false;
}
querySaveModeration($eventScheduleId, $settings, $action);
}
/**
* Query DB to save moderation settings in table event_schedule_moderation_settings
*
* @param integer $eventScheduleId = event schedule id
* @param array $settings = form moderation array
* @param integer $action = insert or update command
* @return void
* access protected member
*/
function querySaveModeration($eventScheduleId, $settings = [], $action)
{
// Get a reference to the controller object
$CI = get_instance();
switch ($action) {
/**
* insert new settings including event schedule id, 1 = INSERT
*/
case INSERT_SETTINGS:
$CI->db->insert(tableEventScheduleId, $settings);
break;
/**
* Update settings using event schedule id, 2 = UPDATE
*/
case UPDATE_SETTINGS:
$CI->db->where(eventScheduleId, $eventScheduleId);
$CI->db->update(tableEventScheduleId, $settings);
break;
}
}
/**
* Get list of event type and location type using its event_id and location_id
*
* @param string $field = table field
* @param string $id = table primary key
* @param array $ids = array of table id
* @param string $table = table name
* @return array
* access public function
*/
function getEventAndLocationStringDetails(string $field, string $id, array $ids, string $table) : array
{
/**
* We need to return empty array if null to prevent record matching errors
*/
if (empty(array_filter($ids))) {
return [];
}
// Get a reference to the controller object
$CI = get_instance();
$CI->db->select($field);
$CI->db->where_in($id, $ids);
$result = $CI->db->get($table);
if ($result->num_rows() > 0) {
return $result->result_array();
}
}
/**
* Get per event moderation settings in ' event_schedule_moderation_setting' table
*
* @param integer $eventScheduleId = event schedule id
* @return array
* access public function
*/
function getIndividualPerEventScheduleModeration(int $eventScheduleId) : array
{
/**
* We need to return empty array if null to prevent record matching errors
*/
if (notSet($eventScheduleId)) {
return [];
}
// Get a reference to the controller object
$CI = get_instance();
$CI->db->select("isInModeration, flexibleModeActivated , flexibleModeIsAgreed ,flexibleModeHours, flexibleModeNumberToLiftModeration");
$CI->db->where('event_schedule_id', $eventScheduleId);
$result = $CI->db->get("event_schedule_moderation_setting");
/**
* Return empty records if event schedule id doesnt exist
*/
if ($result->num_rows() == 0) {
return array(
'flexibleModeIsAgreed' => false,
'flex_is_applied' => false,
'isActive' => false,
'flex_no_of_hours' => 0,
'flex_places_to_lift_moderation' =>0
);
}
/**
* Return list of values
*/
return array(
'flexibleModeIsAgreed' => $result->row()->flexibleModeIsAgreed,
'flex_is_applied' => $result->row()->flexibleModeActivated,
'isActive' => $result->row()->isInModeration,
'flex_no_of_hours' => $result->row()->flexibleModeHours,
'flex_places_to_lift_moderation' => $result->row()->flexibleModeNumberToLiftModeration
);
}