Raffales-LMS/app/Helpers/bibHelper.php

695 lines
25 KiB
PHP
Raw Normal View History

2024-04-16 09:58:24 +00:00
<?php
use App\Helpers\BibClass;
use App\Http\Controllers\NepaliDictonary\DictonaryController;
use App\Models\Log\ActivityLog;
use App\Models\Log\ErrorLog;
use App\Models\Log\OperationLog;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Str;
function pre($object, $die = false)
{
echo "<pre>";
print_r($object);
echo "</pre>";
if ($die) die;
}
function label($text, $echo = true)
{
if ($echo) {
echo $text;
} else {
return $text;
}
}
function template($filepath)
{
$filepath = env("APP_URL") .'/' .env("CLIENT_PATH") . '/' . $filepath;
// $filepath=str_replace('\\','/',env("APP_URL")."/layout/".$filepath);
echo $filepath;
// return
}
if (!function_exists('N2')) {
function N2($N)
{
return number_format($N, 2, '.', ',');
}
}
if (!function_exists('slugify')) {
function slugify($text, $tableName = null)
{
// Generate the initial slug from the text
$slug = preg_replace('/[^a-zA-Z0-9\-]/', '-', $text);
$slug = preg_replace('/-+/', '-', $slug);
$slug = trim($slug, '-');
$slug = strtolower($slug);
// If the table name is provided, check for uniqueness and modify the slug if needed
if ($tableName) {
$originalSlug = $slug;
$count = 1;
while (isSlugExists($tableName, $slug)) {
$slug = $originalSlug . '-' . $count;
$count++;
}
}
return $slug;
}
}
if (!function_exists('isSlugExists')) {
function isSlugExists($tableName, $slug)
{
$aliasField = 'alias';
$count = DB::table($tableName)
->where($aliasField, $slug)
->count();
return $count > 0;
}
}
function createButton($class = "", $type = "submit", $display = "Submit", $url = "")
{
if (!$url) :
?>
<button class="btn <?php echo $class; ?>" type="<?php echo ($display == "Submit") ? $display : $type; ?>">
<?php echo label($display) ?>
</button>
<?php
else :
?>
<a class="btn <?php echo $class; ?>" href="<?php echo $url; ?>">
<?php echo label($display) ?>
</a>
<?php
endif;
}
function createText($name, $id, $display, $class = "", $value = "", $placeHolder = "", $readonly = "", $required = "")
{
?>
<?php if ($display != "") : ?><label for="<?php echo $id; ?>" class="form-label col-form-label"> <?php echo label($display); ?> </label><?php endif; ?>
<div class="form-control-wrap">
<input type="text" id="<?php echo $id; ?>" <?php echo $readonly; ?> placeholder="<?php echo $placeHolder; ?>" name="<?php echo $name; ?>" class="form-control <?php echo $class; ?>" value="<?php echo $value; ?>" <?php if ($required != "") : ?>required<?php endif; ?>>
</div>
<p id='error_<?php echo $name; ?>' class='text-danger custom-error'></p>
<?php
}
/**
* $tableName = Name of table
* $pk = primary key of table
* $name = table select column name
* $class = extra class
* $data = Existing data or for edit case showing selected data
* $display = Displaying name or showing label name.
*/
function getSelectForForeignColumn($tableName, $pk, $name, $class = "form-control", $data = null, $display = null, $customColumnName = null)
{
$tableName = strtolower(trim($tableName));
$pk = trim($pk);
$name = trim($name);
$class = trim($class);
$systems = DB::table($tableName)->where('status', '<>', -1)->orderBy($pk, 'asc')->pluck($name, $pk);
$customColumnName = !empty($customColumnName) ? $customColumnName : $pk; //if we pass column name other then primary key.
customCreateSelect($pk, $pk, $class, $display ?? $name, $systems, ($data) ? $data->$customColumnName : null);
}
function customCreateSelect($name, $id, $class = "form-control", $display = '', $values = array(), $defaultValue = '')
{
$disabled = (in_array("DISABLED", explode(" ", strtoupper($class)))) ? "Disabled" : false;
$required = (in_array("REQUIRED", explode(" ", strtoupper($class)))) ? "Required" : false;
?><label for="<?php echo $id; ?>" class="form-label col-form-label"> <?php echo label($display); ?> </label>
<?php if ($disabled) : ?>
<input type="hidden" name="<?php echo $name; ?>" value="<?php echo $defaultValue; ?>" /><?php endif; ?>
<select class="form-select <?php echo $class ?>" name="<?php echo $name; ?>" data-search="true" id="<?php echo $name; ?>" aria-label="Default select example" <?php echo ($disabled) ? "Disabled" : ""; ?> <?php echo ($required) ? "Required" : ""; ?>>
<option value=""><?php label("Select Option"); ?></option>
<?php foreach ($values as $key => $value) { ?>
<option value="<?= $key ?>" <?php echo $defaultValue == $key ? 'selected' : '' ?>><?= $value ?></option>
<?php } ?>
</select>
<p id='error_<?php echo $name; ?>' class='text-danger custom-error'></p>
<?php
}
function createCustomSelectFromArray($Array, $displayTextForLabel, $HTMLElementName, $defaultValueSelected = '', $additionalClass = "form-control")
{
$disabled = (in_array("DISABLED", explode(" ", strtoupper($additionalClass)))) ? "Disabled" : false;
$required = (in_array("REQUIRED", explode(" ", strtoupper($additionalClass)))) ? "Required" : false;
?>
<label for="<?php echo $HTMLElementName; ?>" class="form-label col-form-label"> <?php echo label($displayTextForLabel); ?> </label>
<?php if ($disabled) : ?>
<input type="hidden" name="<?php echo $HTMLElementName; ?>" value="<?php echo $defaultValueSelected; ?>" />
<?php endif; ?>
<select class="form-select <?php echo $additionalClass ?>" name="<?php echo $HTMLElementName; ?>" data-search="true" id="<?php echo $HTMLElementName; ?>" aria-label="Default select example" <?php echo ($disabled) ? "Disabled" : ""; ?> <?php echo ($required) ? "Required" : ""; ?>>
<option <?php if ($required) : ?>value="-1" <?php endif; ?>><?php label("Select Option"); ?></option>
<?php foreach ($Array as $option) : ?>
<option value="<?php echo $option['value']; ?>" <?php echo $defaultValueSelected == $option['value'] ? 'selected' : ''; ?>>
<?php echo $option['display']; ?>
</option>
<?php endforeach; ?>
</select>
<p id='error_<?php echo $HTMLElementName; ?>' class='text-danger custom-error'></p>
<?php
}
function createCustomSelect($tableName, $fieldNameToDisplay, $fieldNameForValue, $defaultValueSelected, $displayTextForLabel, $HTMLElementName, $additionalClass = "form-control", $defaultCondition = null, $extra = null)
{
// Supply conditions as $defaultCondition = "column_name = 'value'";
$tableName = strtolower(trim($tableName));
$fieldNameToDisplay = trim($fieldNameToDisplay);
$fieldNameForValue = trim($fieldNameForValue);
$additionalClass = trim($additionalClass);
$query = DB::table(DB::raw("`$tableName`"))->where('status', '<>', -1);
if ($defaultCondition) {
$query->whereRaw($defaultCondition);
}
$systems = $query->orderBy($fieldNameForValue, 'asc')->pluck($fieldNameToDisplay, $fieldNameForValue);
?><?php if ($displayTextForLabel != '') : ?><label class="form-label col-form-label"><?php echo label($displayTextForLabel); ?></label><?php endif; ?>
<select class="form-select <?php echo $additionalClass; ?>" name="<?php echo $HTMLElementName; ?>" data-search="true" aria-label="" <?php if (stripos($additionalClass, 'required') !== false) {
echo "REQUIRED";
} ?> <?php echo $extra; ?>>
<?php if (stripos($additionalClass, 'required') !== false) { ?>
<option value=""><?php label("Select Option"); ?></option>
<?php } else { ?>
<option value="0"><?php label("Select Option"); ?></option>
<?php } ?>
<?php foreach ($systems as $key => $value) { ?>
<option value="<?= $key ?>" <?php echo $defaultValueSelected == $key ? 'selected' : '' ?>><?= $value ?></option>
<?php } ?>
</select>
<p id='error_<?php echo $fieldNameForValue; ?>' class='text-danger custom-error'></p>
<?php
}
function createImageInput($name, $display = "", $class = "", $default = "")
{
?>
<div class="input-group">
<span class="input-group-btn">
<a id="<?php echo $name; ?>" data-input="<?php echo $name; ?>_url" data-preview="<?php echo $name; ?>holder" class="btn btn-primary">
<i class="fa fa-picture-o"></i> <?php echo ($display != "") ? $display : "Upload"; ?>
</a>
</span>
<input id="<?php echo $name; ?>_url" class="form-control lfm <?php echo $class; ?>" type="text" name="<?php echo $name; ?>" <?php if ($default != "") : ?> value="<?php echo env("APP_URL") . "/" . $default; ?>" <?php endif; ?> multiple>
</div>
<div id="<?php echo $name; ?>holder" style="margin-top:15px;max-height:80px;overflow:hidden;">
<?php if ($default != "") : ?> <img src="<?php echo env("APP_URL") . "/" . $default; ?>" style="height: 5rem" /> <?php endif; ?>
</div>
<?php
collectScripts(function () use ($name) {
?>
<script>
lfm('<?php echo $name; ?>', 'image', {
prefix: '<?php echo env("APP_URL"); ?>/files'
});
</script>
<?php });
}
function createMultiImageInput($name, $display = "", $class = "", $default = "")
{
?>
<div class="input-group">
<span class="input-group-btn">
<a id="<?php echo $name; ?>" data-input="<?php echo $name; ?>_url" data-preview="<?php echo $name; ?>holder" class="btn btn-primary">
<i class="fa fa-picture-o"></i> <?php echo ($display != "") ? $display : "Choose Photo"; ?>
</a>
</span>
<input id="<?php echo $name; ?>_url" class="form-control lfm <?php echo $class; ?>" type="text" name="<?php echo $name; ?>" <?php if ($default != "") : ?> value="<?php echo env("APP_URL") . "/" . $default; ?>" <?php endif; ?> multiple>
</div>
<div id="<?php echo $name; ?>holder" style="margin-top:15px;max-height:80px;overflow:hidden;">
<?php if ($default != "") : ?> <img src="<?php echo env("APP_URL") . "/" . $default; ?>" style="height: 5rem" /> <?php endif; ?>
</div>
<?php
collectScripts(function () use ($name) {
?>
<script>
lfm('<?php echo $name; ?>', 'image', {
prefix: '<?php echo env("APP_URL"); ?>/files',
type: 'file',
multi_selection: true
});
</script>
<?php });
}
function site_url($url = "")
{
return env("APP_URL") . "/" . trim($url, "/");
}
function base_url($url = "")
{
return env("APP_URL") . "/" . trim($url, "/");
}
function showImageThumb($url)
{ ?>
<div style="max-height:40px;overflow:hidden">
<?php if ($url != "") : ?> <img src="<?php echo env("APP_URL") . "/" . $url; ?>" style="height: 40px;" class="img-fluid" /> <?php endif; ?>
</div>
<?php
}
function getFieldData($tableName, $returnField, $referenceFieldName, $referenceValue)
{
$tableName = strtolower(trim($tableName));
$returnField = trim($returnField);
$referenceFieldName = trim($referenceFieldName);
$query = DB::table(DB::raw("`$tableName`"))->where($referenceFieldName, $referenceValue);
$fieldData = ($query->value($returnField)) ? $query->value($returnField) : "N/A";
return $fieldData;
}
function createErrorParagraph($name, $class = null)
{
echo "<p id='error_$name' class='text-danger custom-error $class'></p>";
}
function createActivityLog($controllerName, $methodName, $activity)
{
$user_id = (auth()->user()) ? auth()->user()->id : "0";
ActivityLog::create([
'user_id' => $user_id,
'controllerName' => $controllerName,
'methodName' => $methodName,
'actionUrl' => request()->fullUrl(),
'activity' => $activity,
]);
}
function getOperationNumber()
{
$startNumber = date('YmdHis') . rand(1000, 9999);
$isExists = OperationLog::where('operation_end_no', $startNumber)->first();
while ($isExists) {
$startNumber = date('YmdHis') . rand(1000, 9999);
$isExists = OperationLog::where('operation_end_no', $startNumber)->first();
}
return $startNumber;
}
function createOperationLog($startOperationNumber, $endOperationNumber, $modelName, $modelId, $operationName, $previousValues, $newValues)
{
$operationId = getOperationNumber();
$user_id = (auth()->user()) ? auth()->user()->id : "0";
OperationLog::create([
'user_id' => $user_id,
'operation_start_no' => $startOperationNumber,
'operation_end_no' => $endOperationNumber,
'model_name' => $modelName,
'model_id' => $modelId,
'operation_name' => $operationName,
'previous_values' => $previousValues ? json_encode($previousValues) : null,
'new_values' => $newValues ? json_encode($newValues) : null,
]);
}
function createErrorLog($controllerName, $methodName, $errors)
{
$user_id = (auth()->user()) ? auth()->user()->id : "0";
ErrorLog::create([
'user_id' => $user_id,
'controller_name' => $controllerName,
'method_name' => $methodName,
'errors' => $errors,
]);
}
function createDate($name, $display = "", $class = "datepicker", $default = "")
{
?>
<div class="form-group">
<label for="<?php echo $name; ?>" class="form-label col-form-label"><?php echo label($display); ?></label>
<div class="form-control-wrap">
<input type="text" name="<?php echo $name; ?>" id="<?php echo $name; ?>" class="form-control datepicker<?php echo $class; ?>" value="<?php echo $default; ?>" />
</div>
</div>
<?php
}
function createPassword($name, $display = "", $class = "password", $default = "")
{
?>
<div class="form-group">
<label for="<?php echo $name; ?>" class="form-label col-form-label"><?php echo label($display); ?></label>
<div class="form-control-wrap">
<input type="password" name="<?php echo $name; ?>" id="<?php echo $name; ?>" class="form-control <?php echo $class; ?>" value="<?php echo $default; ?>" />
</div>
</div>
<?php
}
function createTextArea($name, $class = "", $display = "", $default = "", $row = "")
{
$hasCkeditorClassic = strpos($class, 'ckeditor-classic') !== false;
$uploadUrlAttribute = $hasCkeditorClassic ? ' data-upload-url="' . route('upload') . '"' : '';
?>
<div class="form-group">
<label for="<?php echo $name; ?>" class="form-label col-form-label"><?php echo label($display); ?></label>
<div class="form-control-wrap">
<textarea class="form-control text-area <?php echo $class; ?>" name="<?php echo $name; ?>" id="<?php echo $name; ?>" rows="<?php echo $row; ?>" <?php echo $uploadUrlAttribute; ?>><?php if (isset($default)) {
echo ($default);
} ?></textarea>
</div>
</div>
<?php
}
function createPlainTextArea($name, $class = "", $display = "", $default = "", $row = "")
{
?>
<div class="form-group">
<label for="<?php echo $name; ?>" class="form-label col-form-label"><?php echo label($display); ?></label>
<div class="form-control-wrap">
<textarea class="form-control text-area <?php echo $class; ?>" name="<?php echo $name; ?>" id="<?php echo $name; ?>" rows="<?php echo $row; ?>"><?php if (isset($default)) {
echo ($default);
} ?></textarea>
</div>
</div>
<?php
}
function getDisplayOrder($tableName)
{
// echo $tableName;die;
$maxDisplayOrder = DB::select("select max(display_order) as display_order from $tableName")[0]->display_order;
$nextDisplayOrder = $maxDisplayOrder + 1;
return $nextDisplayOrder;
}
function getAlias($textField, $tableName)
{
$maxDisplayOrder = DB::select("select max(display_order) as display_order from $tableName")[0]->display_order;
$nextDisplayOrder = $maxDisplayOrder + 1;
return $nextDisplayOrder;
}
if (!function_exists('myDate')) {
function myDate($originalDate)
{
return date("F d Y", strtotime($originalDate));
}
}
if (!function_exists('dbDate')) {
function dbDate($date)
{
return date("Y-m-d", strtotime($date));
}
}
if (!function_exists('myTime')) {
function myTime($originalDate)
{
return date("g:i A", strtotime($originalDate));
}
}
if (!function_exists('myDateTime')) {
function myDateTime($originalDate)
{
return date("F d Y g:i A", strtotime($originalDate));
}
}
if (!function_exists('myDaysDiff')) {
function myDaysDiff($fromDate, $toDate)
{
$fromDate = strtotime($fromDate);
$toDate = strtotime($toDate);
$datediff = $toDate - $fromDate;
return round($datediff / (60 * 60 * 24));
}
}
if (!function_exists('firstDayOfNepaliMonth')) {
function firstDayOfNepaliMonth($engDate = "")
{
$engDate = ($engDate != "") ? $engDate : date("Y-m-d");
$NepaliDate = NepaliDate($engDate);
$nD = explode("-", $NepaliDate);
$Day = '1';
$Month = $nD[1];
$Year = $nD[0];
$t = "select bs_date from tbl_nepengcalendar where bs_date='" . $Year . "-" . $Month . "-" . $Day . "'";
return DB::select($t)[0]->bs_date;
}
}
if (!function_exists('firstDayOfNepaliMonth1')) {
function firstDayOfNepaliMonth1($engDate = "")
{
$engDate = ($engDate != "") ? $engDate : date("Y-m-d");
$NepaliDate = NepaliDate($engDate);
$nD = explode("-", $NepaliDate);
$Day = '1';
$Month = ($nD[1] < 10) ? '0' . $nD[1] : $nD[1];
$Year = $nD[0];
$t = "select ad_date from tbl_nepengcalendar where bs_date='" . $Year . "-" . $Month . "-" . $Day . "'";
return DB::select($t)[0]->ad_date;
}
}
if (!function_exists('lastDayOfNepaliMonth')) {
function lastDayOfNepaliMonth($engDate = "")
{
$engDate = ($engDate != "") ? $engDate : date("Y-m-d");
$NepaliDate = NepaliDate1($engDate);
$nD = explode("-", $NepaliDate);
$Day = '1';
$Month = $nD[1];
$Year = $nD[0];
$t = "select ad_date from tbl_nepengcalendar where bs_date like '" . $Year . "-" . $Month . "-%' order by ad_date";
$dates = DB::select($t);
$date = end($dates);
return $date->ad_date;
}
}
if (!function_exists('EnglishDate')) {
function EnglishDate($NepaliYear, $NepaliMonth, $NepaliDay)
{
if ($NepaliMonth < 10) {
$NepaliMonth = "0" . $NepaliMonth;
}
$bs_date = $NepaliYear . "-" . $NepaliMonth . "-" . $NepaliDay;
$t = "select ad_date from tbl_nepengcalendar where bs_date='$bs_date'";
$q = DB::select($t);
return $q[0]->ad_date;
}
}
if (!function_exists('Today')) {
function Today()
{
return date("Y-m-d");
}
}
if (!function_exists('NepaliToEnglishDate')) {
function NepaliToEnglishDate($NepaliDate)
{
$NepaliDate = trim($NepaliDate);
if (trim($NepaliDate) == "") {
return date("Y-m-d");
}
$NepaliDate = explode("-", $NepaliDate);
$NepaliMonth = intval($NepaliDate[1]);
$NepaliYear = intval($NepaliDate[0]);
$NepaliDay = intval($NepaliDate[2]);
if ($NepaliMonth < 10) {
$NepaliMonth = "0" . $NepaliMonth;
}
$bs_date = $NepaliYear . "-" . $NepaliMonth . "-" . $NepaliDay;
$t = "select ad_date from tbl_nepengcalendar where bs_date='$bs_date'";
$q = DB::select($t);
return $q[0]->ad_date;
}
}
if (!function_exists('NepaliDate')) {
function NepaliDate($engDate = "")
{
$engDate = ($engDate != "") ? $engDate : date("Y-m-d");
if ($engDate != "0000-00-00") {
// return str_replace("-0", "-", DB::table('tbl_nepengcalendar')->where('ad_date', $engDate)->first()->bs_date);
$result = DB::table('tbl_nepengcalendar')->where('ad_date', $engDate)->first();
if ($result) {
$bsDate = $result->bs_date;
$convertedDate = convertNumbersToUnicode(str_replace("-", "-", $bsDate));
return $convertedDate;
} else {
// Handle the case when the query result is null
return null;
}
} else {
return "";
}
}
}
function convertNumbersToUnicode($number = "2080-10-13")
{
$unicodeDigits = [
'0' => '',
'1' => '१',
'2' => '२',
'3' => '३',
'4' => '४',
'5' => '५',
'6' => '६',
'7' => '७',
'8' => '८',
'9' => '९',
];
$converted = '';
$digits = str_split((string)$number);
foreach ($digits as $digit) {
if (isset($unicodeDigits[$digit])) {
$converted .= $unicodeDigits[$digit];
} elseif ($digit === '-') {
$converted .= '-';
} else {
$converted .= $digit;
}
}
//dd($converted);
return $converted;
}
if (!function_exists('NepaliMonth')) {
function NepaliMonth($engDate = "")
{
$NepaliDate = NepaliDate($engDate);
$nD = explode("-", $NepaliDate);
$Month = $nD[1];
return intval($Month);
}
}
if (!function_exists('NepaliYear')) {
function NepaliYear($engDate = "")
{
$NepaliDate = NepaliDate($engDate);
$nD = explode("-", $NepaliDate);
$Year = $nD[0];
return intval($Year);
}
}
if (!function_exists('NepaliMonthNameByNumber')) {
function NepaliMonthNameByNumber($number)
{
$MonthNames = array(
"Baisakh", "Jestha", "Ashad", "Shrawan", "Bhadra", "Asoj",
"Kartik", "Mangsir", "Poush", "Magh", "Falgun", "Chaitra"
);
return $MonthNames[$number - 1];
}
}
if (!function_exists('NepaliMonthName')) {
function NepaliMonthName($engDate = "")
{
$Month = NepaliMonth($engDate);
$MonthNames = array(
"Baisakh", "Jestha", "Ashad", "Shrawan", "Bhadra", "Asoj",
"Kartik", "Mangsir", "Poush", "Magh", "Falgun", "Chaitra"
);
return $MonthNames[$Month - 1];
}
}
if (!function_exists('N2')) {
function N2($N)
{
return number_format($N, 2, '.', ',');
}
}
function collectScripts(callable $callback)
{
ob_start();
$callback();
$script = ob_get_clean();
if (!empty($script)) {
pushScriptToFooter($script);
}
}
function pushScriptToFooter($script)
{
if (!isset($GLOBALS['scripts'])) {
$GLOBALS['scripts'] = [];
}
$GLOBALS['scripts'][] = $script;
}
function sectionHeader($text, $sectiontitle = null)
{
$texts = explode(" ", $text);
?>
<div class="row text-center intro">
<div class="col-12">
<?php if ($sectiontitle) : ?>
<span class="pre-title"><?php echo $sectiontitle; ?></span>
<?php endif; ?>
<h2 class="ylw-clr"><?php echo $texts[0];
unset($texts[0]); ?> <span class="featured"><span><?php echo implode(" ", $texts); ?></span></span></h2>
</div>
</div>
<?php
}
if (!function_exists('replace_img_src')) {
function replace_img_src($content)
{
return preg_replace(
'/src="storage(\/[^"]*)"/',
'src="' . site_url() . 'storage$1"',
$content
);
}
}
function processForShortcode($content)
{
$content = replace_img_src($content);
return preg_replace_callback('/\[([\w_]+)([^]]*)\]/', function ($matches) {
$shortcodeName = $matches[1];
$shortcodeAttributes = [];
$mandatoryAttributes = ['alias', 'css', 'title'];
preg_match_all('/\s*(\w+)\s*=\s*(?:"([^"]*)"|\'([^\']*)\'|([^"\'][^\s]*))/', $matches[2], $attrMatches, PREG_SET_ORDER);
foreach ($attrMatches as $attrMatch) {
$attrName = $attrMatch[1];
$attrValue = $attrMatch[2] ?: ($attrMatch[3] ?: $attrMatch[4]); // Use non-empty capture group as the attribute value
$attrValue = trim($attrValue, "\"'"); // Remove both single and double quotes from the attribute value
$shortcodeAttributes[$attrName] = $attrValue;
}
// Fill in missing mandatory attributes with empty strings
foreach ($mandatoryAttributes as $attribute) {
if (!isset($shortcodeAttributes[$attribute])) {
$shortcodeAttributes[$attribute] = '';
}
}
return view("shortcodes." . $shortcodeName, $shortcodeAttributes);
}, $content);
}