= 0 ORDER BY `name`"); echo "\n"; while (list($ID,$name,$color) = $stH->fetch(PDO::FETCH_NUM)) { $selected = ($selGrp == $name) ? ' selected' : ''; echo "\n"; } } function catList($selCat) { global $xx, $usr; $where = 'WHERE `status` >= 0'.($usr['vCats'] != '0' ? " AND `ID` IN ({$usr['vCats']})" : ''); $stH = dbQuery("SELECT `ID`,`name`,`color`,`bgColor` FROM `categories` {$where} ORDER BY `sequence`"); echo "\n"; while (list($ID,$name,$color,$bgColor) = $stH->fetch(PDO::FETCH_NUM)) { $selected = ($selCat == $name) ? ' selected' : ''; $catColor = ($color ? "color:{$color};" : '').($bgColor ? "background-color:{$bgColor};" : ''); echo "\n"; } } function searchForm() { global $xx, $set, $schText, $eF, $grpName, $catName, $fromDda, $tillDda, $lcI; echo "
{$xx['sch_define_search']}\n \n \n\n\n\n\n\n\n"; foreach (str_split($set['evtTemplGen']) as $fieldNr) { if (strpos('1345',$fieldNr) !== false) { switch ($fieldNr) { case '1': echo "\n\n\n"; break; case '3': echo "\n\n\n"; break; case '4': echo "\n\n\n"; break; case '5': echo "\n\n\n"; } } } echo "\n"; echo "\n"; echo "\n\n
{$xx['sch_search_text']}:

{$xx['sch_event_fields']}:
{$xx['sch_user_group']}:
{$xx['sch_event_cat']}:
{$xx['sch_occurring_between']}: 📅 📅
\n
\n
\n "; } function validateForm() { global $xx, $schText, $fromDda, $tillDda; $schText = trim(str_replace('%', '', $schText),'&'); if (strlen(str_replace('_', '', $schText)) < 1) { return $xx['sch_invalid_search_text']; } if ($fromDda === false) { return $xx['sch_bad_start_date']; } if ($tillDda === false) { return $xx['sch_bad_end_date']; } return ''; } function searchText() { global $xx, $set, $nowTS, $schText, $eF, $grpName, $catName, $fromDda, $tillDda, $lcI; //set event filter $schString = str_replace('&', '%', "%{$schText}%"); //prepare description filter $filter = ''; if ($grpName != '*') { $filter .= " AND g.`name` = '{$grpName}'"; } if ($catName != '*') { $filter .= " AND c.`name` = '{$catName}'"; } $filter .= " AND ("; if (in_array(0, $eF) or in_array(1, $eF)) { $filter .= "e.`title` LIKE '{$schString}'"; } //Title if (in_array(0, $eF) or in_array(2, $eF)) { $filter .= ((substr($filter, -1) == '(') ? '' : ' OR ')."e.`venue` LIKE '{$schString}'"; } //venue if (in_array(0, $eF) or in_array(3, $eF)) { $filter .= ((substr($filter, -1) == '(') ? '' : ' OR ')."e.`text1` LIKE '{$schString}'"; } //text field 1 if (in_array(0, $eF) or in_array(4, $eF)) { $filter .= ((substr($filter, -1) == '(') ? '' : ' OR ')."e.`text2` LIKE '{$schString}'"; } //text field 2 if (in_array(0, $eF) or in_array(5, $eF)) { $filter .= ((substr($filter, -1) == '(') ? '' : ' OR ')."e.`text3` LIKE '{$schString}'"; } //text field 3 $filter = substr($filter,5).")"; //set event date range $sDate = ($fromDda) ? $fromDda : date('Y-m-d',$nowTS-31536000); //-1 year $eDate = ($tillDda) ? $tillDda : date('Y-m-d',$nowTS+31536000); //+1 year retrieve($sDate,$eDate,'',$filter); //grab events //display header $fields = ''; if (in_array(0, $eF) or in_array(1, $eF)) { $fields = ' + '.$xx['sch_title']; } foreach (str_split($set['evtTemplGen']) as $fieldNr) { if (strpos('1345',$fieldNr) !== false) { switch ($fieldNr) { case '1': if (in_array(0, $eF) or in_array(2, $eF)) { $fields .= ' + '.$xx['sch_venue']; } break; case '3': if (in_array(0, $eF) or in_array(3, $eF)) { $fields .= ' + '.$xx['sch_description']; } break; case '4': if (in_array(0, $eF) or in_array(4, $eF)) { $fields .= ' + '.($set['xField1Label'] ? "{$set['xField1Label']}" : $xx['sch_extra_field1']); } break; case '5': if (in_array(0, $eF) or in_array(5, $eF)) { $fields .= ' + '.($set['xField2Label'] ? "{$set['xField2Label']}" : $xx['sch_extra_field2']); } } } } $fields = substr($fields,3); echo "
\n"; foreach ($eF as $key => $value) { echo "\n"; } echo "
{$xx['sch_search_text']}: {$schText}
{$xx['sch_event_fields']}: {$fields}
{$xx['sch_user_group']}: ".($grpName != '*' ? $grpName : $xx['sch_all_groups'])."
{$xx['sch_event_cat']}: ".($catName != '*' ? $catName : $xx['sch_all_cats'])."
{$xx['sch_occurring_between']}: ".makeD($sDate,2)." - ".makeD($eDate,2)."
\n"; } function showMatches($eType) { //eType (0: normal, 1: mde, 2: recurring) global $usr, $set, $xx, $evtList, $schText; //display matching events $match = '%('.str_replace(array('_','&'), array('.','[^<>]+?'), $schText).')(?![^<]*>)%i'; //convert to regex (?!: neg.look-ahead condition) $evtDone = array(); foreach($evtList as $date => &$events) { foreach ($events as $evt) { if ($eType == 0) { if ($evt['mde'] or $evt['r_t']) { continue; } //mde or rec event $evtDate = "".makeD($date,5).""; } elseif ($eType == 1) { if (!$evt['mde'] or in_array($evt['eid'],$evtDone)) { continue; } //!mde or mde processed $evtDate = "".makeD($evt['sda'],5)." - ".makeD($evt['eda'],5).""; } elseif ($eType == 2) { if (!$evt['r_t'] or in_array($evt['eid'],$evtDone)) { continue; } //!rec or rec processed $evtDate = "".makeD($date,5).' - '.repeatText($evt['r_t'],$evt['r_i'],$evt['r_p'],$evt['r_m'],$evt['r_u']).""; } $evtDone[] = $evt['eid']; $evtTime = $evt['ald'] ? $xx['vws_all_day'] : ITtoDT($evt['sti']).($evt['eti'] ? ' - '.ITtoDT($evt['eti']) : ''); if ($set['eventColor']) { $eStyle = ($evt['cco'] ? "color:{$evt['cco']};" : '').($evt['cbg'] ? "background-color:{$evt['cbg']};" : ''); } else { $eStyle = $evt['uco'] ? "background-color:{$evt['uco']};" : ''; } $eStyle = $eStyle ? ' style="'.$eStyle.'"' : ''; $chBox = ''; if ($evt['cbx']) { $mayCheck = ($usr['privs'] > 3 or ($usr['privs'] > 1 and $evt['uid'] == $usr['ID'])); //boolean $chBox .= !$evt['mde'] ? (strpos($evt['chd'], $date) ? $evt['cmk'] : '☐') : '?'; $cBoxAtt = ($mayCheck and !$evt['mde']) ? " class='chkBox point' onclick=\"checkE(this,{$evt['eid']},'{$date}');\"" : 'class="chkBox arrow"'; $chBox = "{$chBox}"; } $toAppr = ($evt['app'] and !$evt['apd']) ? ' toApprove' : ''; echo "
{$evtDate}
\n"; echo "\n\n"; echo "
{$evtTime}"; $eTitle = preg_replace($match, '$1',$evt['tit']); if ($set['details4All'] == 1 or ($set['details4All'] == 2 and $usr['ID'] > 1) or $evt['mayE']) { $click = ($evt['mayE'] ? 'editE' : 'showE')."({$evt['eid']},'{$date}')"; echo "{$chBox}".$eTitle."\n"; echo preg_replace($match, '$1',makeE($evt,$set['evtTemplGen'],'bx',"
\n"))."\n"; } else { echo "{$chBox}".$eTitle."\n"; } echo "

\n"; } } if (empty($evtDone)) { echo $xx['none']; } } //control logic $msg = ''; //init if (isset($_POST["search"])) { $msg = validateForm(); } echo "

{$msg}

\n"; if (isset($_POST["search"]) and !$msg) { searchText(); //search echo "
\n"; $fsClass = $isMob ? 'upc-m' : 'upc'; if ($evtList) { echo "
\n{$xx['sch_sd_events']}\n"; showMatches(0); //show results single-day events echo "
"; echo "
\n{$xx['sch_md_events']}\n"; showMatches(1); //show results multi-day events echo "
"; echo "
\n{$xx['sch_rc_events']}\n"; showMatches(2); //show results recurring events echo "
"; } else { echo "
{$xx['sch_no_results']}
\n"; } echo "
\n"; } else { echo "
\n"; searchForm(); //define search echo "
\n
\n"; } ?>