\n";
}
function sortCategories() {
$stH = dbQuery("SELECT `ID` FROM `categories` WHERE `status` >= 0 ORDER BY CASE WHEN `ID` < 2 THEN `ID` ELSE `name` END");
$rowArray = $stH->fetchAll(PDO::FETCH_ASSOC);
$stH = null;
$stH = stPrep("UPDATE `categories` SET `sequence` = ? WHERE `ID` = ?");
$count = 0;
foreach ($rowArray as $row) {
stExec($stH,array(++$count,$row['ID']));
}
}
function editCategory($cat) {
global $ax, $mode, $nrCats, $lcI;
echo "
\n";
}
function validateCat(&$cat) { //add category
global $ax, $nrCats, $rxCalURL;
$msg = ''; //init
do {
if (!$cat['name']) { $msg = $ax['cat_name_missing']; break; }
if (!ctype_digit($cat['olGap']) or $cat['olGap'] < 0 or $cat['olGap'] > 720) { $msg = $ax['cat_olgap_invalid']; break; }
if (!ctype_digit($cat['tsHrs']) or $cat['tsHrs'] < 0 or !ctype_digit($cat['tsMin']) or $cat['tsMin'] > 59 or $cat['tsMin'] < 0) { $msg = $ax['cat_duration_invalid']; break; }
if ($cat['chBox'] and (!$cat['chLab'] or !$cat['chMrk'])) { $msg = $ax['cat_mark_label_missing']; break; }
if (!ctype_digit($cat['sqnce']) or $cat['sqnce'] == 0) {
$cat['sqnce'] = 1;
} elseif ($cat['sqnce'] > $nrCats) {
$cat['sqnce'] = $nrCats + 1;
}
if ($cat['nolap'] and !$cat['olErr']) { $msg = $ax['cat_no_ol_error_msg']; break; }
if (($cat['urlNm'] and !$cat['urlLk']) or ($cat['urlLk'] and !preg_match($rxCalURL, $cat['urlLk']))) { $msg = $ax['cat_invalid_url']; break; }
$cat['urlNm'] = str_replace(array('[',']'),'',$cat['urlNm']);
if ($cat['urlLk'] and empty($cat['urlNm'])) { $msg = $ax['cat_no_url_name']; break; }
$cat['urlLN'] = $cat['urlLk'] ? "{$cat['urlLk']}[{$cat['urlNm']}]" : '';
} while (false);
return $msg;
}
function addCat(&$cat) { //add category
global $ax, $mode, $nrCats;
do {
//validate form fields
if ($msg = validateCat($cat)) { break; }
//renumber sequence
$stH = stPrep("SELECT `ID` FROM `categories` WHERE `status` >= 0 AND `sequence` >= ? ORDER BY `sequence`");
stExec($stH,array($cat['sqnce']));
$rowArray = $stH->fetchAll(PDO::FETCH_ASSOC);
$stH = null;
$stH = stPrep("UPDATE `categories` SET `sequence` = ? WHERE `ID` = ?");
$count = $cat['sqnce'];
foreach ($rowArray as $row) {
stExec($stH,array(++$count,$row['ID']));
}
//add new category
$stH = stPrep("INSERT INTO `categories` (`name`,`symbol`,`sequence`,`repeat`,`noverlap`,`olapGap`,`olErrMsg`,`defSlot`,`fixSlot`,`approve`,`dayColor`,`color`,`bgColor`,`checkBx`,`checkLb`,`checkMk`,`subName1`,`subColor1`,`subBgrnd1`,`subName2`,`subColor2`,`subBgrnd2`,`subName3`,`subColor3`,`subBgrnd3`,`subName4`,`subColor4`,`subBgrnd4`,`urlLink`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
stExec($stH,array($cat['name'],$cat['symbl'],$cat['sqnce'],$cat['rpeat'],$cat['nolap'],$cat['olGap'],$cat['olErr'],(($cat['tsHrs'] * 60) + $cat['tsMin']),$cat['tsFix'],$cat['appro'],$cat['daybg'],$cat['color'],$cat['bgrnd'],$cat['chBox'],$cat['chLab'],$cat['chMrk'],$cat['subN1'],$cat['subC1'],$cat['subB1'],$cat['subN2'],$cat['subC2'],$cat['subB2'],$cat['subN3'],$cat['subC3'],$cat['subB3'],$cat['subN4'],$cat['subC4'],$cat['subB4'],$cat['urlLN']));
$count = $stH->rowCount();
if (!$count) { $msg = "Database Error: {$ax['cat_not_added']}"; break; }
$msg = $ax['cat_added'];
$mode = '';
} while (false);
return $msg;
}
function updateCat(&$cat) { //update category
global $ax, $mode, $nrCats;
do {
//validate form fields
if ($msg = validateCat($cat)) { break; }
//update
$stH = stPrep("UPDATE `categories` SET `name`=?,`symbol`=?,`sequence`=?,`repeat`=?,`noverlap`=?,`olapGap`=?,`olErrMsg`=?,`defSlot`=?,`fixSlot`=?,`approve`=?,`dayColor`=?,`color`=?,`bgColor`=?,`checkBx`=?,`checkLb`=?,`checkMk`=?,`subName1`=?,`subColor1`=?,`subBgrnd1`=?,`subName2`=?,`subColor2`=?,`subBgrnd2`=?,`subName3`=?,`subColor3`=?,`subBgrnd3`=?,`subName4`=?,`subColor4`=?,`subBgrnd4`=?,`urlLink`=? WHERE `ID`=?");
stExec($stH,array($cat['name'],$cat['symbl'],$cat['sqnce'],$cat['rpeat'],$cat['nolap'],$cat['olGap'],$cat['olErr'],(($cat['tsHrs'] * 60) + $cat['tsMin']),$cat['tsFix'],$cat['appro'],$cat['daybg'],$cat['color'],$cat['bgrnd'],$cat['chBox'],$cat['chLab'],$cat['chMrk'],$cat['subN1'],$cat['subC1'],$cat['subB1'],$cat['subN2'],$cat['subC2'],$cat['subB2'],$cat['subN3'],$cat['subC3'],$cat['subB3'],$cat['subN4'],$cat['subC4'],$cat['subB4'],$cat['urlLN'],$cat['id']));
$count = $stH->rowCount();
if (!$count) { $msg = "Database Error: {$ax['cat_not_updated']}"; break; }
//renumber sequence
$stH = dbQuery("SELECT `ID` FROM `categories` WHERE `status` >= 0 ORDER BY `sequence`");
$rowArray = $stH->fetchAll(PDO::FETCH_ASSOC);
$stH = null;
$stH = stPrep("UPDATE `categories` SET `sequence` = ? WHERE `ID` = ?");
$count = 1;
foreach ($rowArray as $row) {
if ($row['ID'] != $cat['id']) {
if ($count == $cat['sqnce']) { $count++; }
stExec($stH,array($count++,$row['ID']));
}
}
$msg = $ax['cat_updated'];
$mode = '';
} while (false);
return $msg;
}
function deleteCat($cat) { //delete category
global $ax;
$stH = stPrep("UPDATE `categories` SET `sequence` = 0, `status` = -1 WHERE `ID` = ?");
stExec($stH,array($cat['id']));
$count = $stH->rowCount();
if (!$count) {
$msg = "Database Error: {$ax['cat_not_deleted']}";
} else {
$msg = $ax['cat_deleted'];
//renumber sequence
$stH = dbQuery("SELECT `ID` FROM `categories` WHERE `status` >= 0 ORDER BY `sequence`");
$rowArray = $stH->fetchAll(PDO::FETCH_ASSOC);
$stH = null;
$stH = stPrep("UPDATE `categories` SET `sequence` = ? WHERE `ID` = ?");
$count = 1;
foreach ($rowArray as $row) {
stExec($stH,array($count++,$row['ID']));
}
}
return $msg;
}
//Control logic
if ($usr['privs'] >= 4) { //manager or admin
$msg = '';
if (isset($_POST['addExe'])) {
$msg = addCat($cat);
} elseif (isset($_POST['updExe'])) {
$msg = updateCat($cat);
} elseif (isset($_POST['delExe'])) {
$msg = deleteCat($cat);
}
echo "
{$msg}
\n";
if ($mode == 'sort') {
sortCategories(); //sort on name
}
if (($mode != 'add' and $mode != 'edit') or isset($_POST['back'])) {
showCategories(false); //no add / no edit
} else {
editCategory($cat); //add or edit
showCategories(true);
}
echo "