Compare commits

..

No commits in common. "014e9011b911627048ca621572d686517b7e6597" and "7550b36bee397b2eeda4480fb3682e46c55916a1" have entirely different histories.

6 changed files with 75 additions and 93 deletions

View File

@ -1,6 +1,7 @@
LimitRequestBody 20971520 LimitRequestBody 20971520
#RewriteEngine on RewriteEngine On
#RewriteRule ^calendar([0-9]+).ics$ calendar4.php?u=$1 [QSA] RewriteEngine on
RewriteRule ^calendar([0-9]+).ics$ calendar4.php?u=$1 [QSA]
#RewriteRule ^api/(.*)$ api2.php?query=$1 [L,QSA] RewriteRule ^api/(.*)$ api2.php?query=$1 [L,QSA]

View File

@ -1,3 +0,0 @@
<?php
phpinfo();
?>

View File

@ -24,8 +24,6 @@
$MY_TITLE = "Events, Training, & Workshops"; $MY_TITLE = "Events, Training, & Workshops";
$MY_CRUMB = "Activities"; $MY_CRUMB = "Activities";
$MY_PATH = $_SERVER['PHP_SELF']; $MY_PATH = $_SERVER['PHP_SELF'];
$FOCUS = "sp24";
?> ?>
<!--<script src="/_files/js/vendor/vue2.6.min.js"></script>--> <!--<script src="/_files/js/vendor/vue2.6.min.js"></script>-->
<script src="js/intranet_libs.js"/></script> <script src="js/intranet_libs.js"/></script>
@ -47,7 +45,7 @@
<div class=" pure-u-19-24 main-content"> <div class=" pure-u-19-24 main-content">
<h1 class="main_header"><?php echo $MY_TITLE; ?></h1> <h1 class="main_header"><?php echo $MY_TITLE; ?></h1>
<div id="dir_editor"> <div id="dir_editor">
<activitylist :static="0" :itineraryview="false" :focus="'<?php echo $FOCUS;?>'" zoom_on="0" survey_on="0"></activitylist> <activitylist :static="1" :itineraryview="false" :focus="'<?php echo $FOCUS;?>'" zoom_on="0" survey_on="0"></activitylist>
</div> </div>
</div> </div>
</div> </div>

View File

@ -51,7 +51,8 @@ function multi_row_select($qry, $j=1) { global $c; $rows = array();
function multi_row_1d($qry) { global $c; function multi_row_1d($qry) { global $c;
$savedQuery = mysqli_query($c, $qry); $savedQuery = mysqli_query($c, $qry);
while($savedResult = mysqli_fetch_array($savedQuery)) { $savedArray[] = $savedResult[0]; } while($savedResult = mysqli_fetch_array($savedQuery)) {
$savedArray[] = $savedResult[0]; }
return $savedArray; } return $savedArray; }
@ -148,20 +149,20 @@ if (is_null($USER)) {
// Define URL templates and associated SQL queries // Define URL templates and associated SQL queries
$queries = array( $queries = [
'/users/{id}' => 'SELECT * FROM users WHERE id = :id', '/users/{id}' => 'SELECT * FROM users WHERE id = :id',
'/users' => 'SELECT * FROM users', '/users' => 'SELECT * FROM users',
'/products' => 'SELECT * FROM products', '/products' => 'SELECT * FROM products',
'/sessions' => 'SELECT c.id,c.title,c.desc,c.length,c.starttime,c.track,c.location,c.location_irl,c.mode,c.gets_survey,c.category,c.parent,c.recording,c.instructions,c.image_url,c.is_flex_approved,c.cal_uid,sst.type AS typeStr, sst.id AS type, GROUP_CONCAT(ctg.tag) AS tags FROM conf_sessions c LEFT JOIN conf_sessiontypes sst ON c.type=sst.id LEFT JOIN conf_tagmember ct ON c.id=ct.session LEFT JOIN conf_tags ctg ON ctg.id=ct.tag GROUP BY c.id ORDER BY c.track, c.starttime;', '/sessions' => 'SELECT c.id,c.title,c.desc,c.length,c.starttime,c.track,c.location,c.location_irl,c.mode,c.gets_survey,c.category,c.parent,c.recording,c.instructions,c.image_url,c.is_flex_approved,c.cal_uid,sst.type AS typeStr, sst.id AS type, GROUP_CONCAT(ctg.tag) AS tags FROM conf_sessions c LEFT JOIN conf_sessiontypes sst ON c.type=sst.id LEFT JOIN conf_tagmember ct ON c.id=ct.session LEFT JOIN conf_tags ctg ON ctg.id=ct.tag GROUP BY c.id ORDER BY c.track, c.starttime;',
'/ses/{day}' => 'SELECT c.id,c.title,c.desc,c.length,c.starttime,c.track,c.location,c.location_irl,c.mode,c.gets_survey,c.category,c.parent,c.recording,c.image_url,c.is_flex_approved,c.cal_uid,sst.type AS typeStr, sst.id AS type, GROUP_CONCAT(ctg.tag) AS tags FROM conf_sessions c LEFT JOIN conf_sessiontypes sst ON c.type=sst.id LEFT JOIN conf_tagmember ct ON c.id=ct.session LEFT JOIN conf_tags ctg ON ctg.id=ct.tag WHERE c.starttime LIKE \'%:day%\' GROUP BY c.id ORDER BY c.track, c.starttime;', '/ses/{day}' => 'SELECT c.id,c.title,c.desc,c.length,c.starttime,c.track,c.location,c.location_irl,c.mode,c.gets_survey,c.category,c.parent,c.recording,c.image_url,c.is_flex_approved,c.cal_uid,sst.type AS typeStr, sst.id AS type, GROUP_CONCAT(ctg.tag) AS tags FROM conf_sessions c LEFT JOIN conf_sessiontypes sst ON c.type=sst.id LEFT JOIN conf_tagmember ct ON c.id=ct.session LEFT JOIN conf_tags ctg ON ctg.id=ct.tag WHERE c.starttime LIKE \'%:day%\' GROUP BY c.id ORDER BY c.track, c.starttime;',
'/settings' => 'SELECT * FROM conf_uinforecord;' '/settings' => 'SELECT * FROM conf_uinforecord;'
); ];
$functions = array( $functions = [
'/app' => 'appdata', '/app' => 'appdata',
'/start' => 'startup', '/start' => 'startup',
'/update/activity' => 'set_sessioninfo', '/update/activity' => 'set_sessioninfo',
); ];
if (1) { //// ($_SERVER['REQUEST_METHOD'] === 'GET') { if (1) { //// ($_SERVER['REQUEST_METHOD'] === 'GET') {
@ -176,7 +177,7 @@ if (1) { //// ($_SERVER['REQUEST_METHOD'] === 'GET') {
if (preg_match("#^$pattern$#", $requestUrl, $matches)) { if (preg_match("#^$pattern$#", $requestUrl, $matches)) {
// Extract parameter values // Extract parameter values
$params = array(); $params = [];
preg_match_all('/{([\-_\w]+)}/', $urlTemplate, $paramNames); preg_match_all('/{([\-_\w]+)}/', $urlTemplate, $paramNames);
foreach ($paramNames[1] as $index => $paramName) { foreach ($paramNames[1] as $index => $paramName) {
$paramValue = $matches[$index + 1]; $paramValue = $matches[$index + 1];
@ -215,7 +216,7 @@ if (1) { //// ($_SERVER['REQUEST_METHOD'] === 'GET') {
if (preg_match("#^$pattern$#", $requestUrl, $matches)) { if (preg_match("#^$pattern$#", $requestUrl, $matches)) {
// Extract parameter values // Extract parameter values
$params = array(); $params = [];
preg_match_all('/{([\-_\w]+)}/', $urlTemplate, $paramNames); preg_match_all('/{([\-_\w]+)}/', $urlTemplate, $paramNames);
foreach ($paramNames[1] as $index => $paramName) { foreach ($paramNames[1] as $index => $paramName) {
$paramValue = $matches[$index + 1]; $paramValue = $matches[$index + 1];
@ -360,7 +361,7 @@ function set_sessioninfo() {
$q = array_reduce($cv, 'reducer', "UPDATE `{$table}` SET "); $q = array_reduce($cv, 'reducer', "UPDATE `{$table}` SET ");
$q = substr($q, 0, -2); $q = substr($q, 0, -2);
$q .= $WHERECLAUSE; $q .= $WHERECLAUSE;
single_row_update($q,0); single_row_update($q,0,$c2);
echo json_encode( array("rawvalstr"=>$_REQUEST['vals'], "result"=>"success","action"=>"updated", "query"=>$q,"err"=>mysqli_error($c2))); echo json_encode( array("rawvalstr"=>$_REQUEST['vals'], "result"=>"success","action"=>"updated", "query"=>$q,"err"=>mysqli_error($c2)));
} else { } else {
echo json_encode( array("result"=>"fail", "err"=>"no activity id specified") ); } echo json_encode( array("result"=>"fail", "err"=>"no activity id specified") ); }

View File

@ -86,7 +86,7 @@ $options_array = multi_row_select($options_query, 0, $c2);
$OPTIONS = array_reduce($options_array, function ($result, $item) { $OPTIONS = array_reduce($options_array, function ($result, $item) {
$result[$item["label"]] = $item["value"]; $result[$item["label"]] = $item["value"];
return $result; }, array()); return $result; }, []);
$default_ay_query = "SELECT begin,end FROM conf_academicyears ca JOIN conf_uinforecord cu ON cu.value=ca.id WHERE cu.label='default_ay';"; $default_ay_query = "SELECT begin,end FROM conf_academicyears ca JOIN conf_uinforecord cu ON cu.value=ca.id WHERE cu.label='default_ay';";
$AY = single_row_select($default_ay_query,0, $c2); $AY = single_row_select($default_ay_query,0, $c2);

View File

@ -1,7 +1,7 @@
var PROD = 0 var PROD = 0
if (PROD && location.protocol !== 'https:') { if (PROD && location.protocol !== 'https:') {
location.replace(`https:${location.href.substring(location.protocol.length)}`); location.replace(`https:${location.href.substring(location.protocol.length)}`);
@ -17,7 +17,7 @@ if (PROD && location.protocol !== 'https:') {
// | | | | __/ | |_) | __/ | \__ \ // | | | | __/ | |_) | __/ | \__ \
// |_| |_|\___|_| .__/ \___|_| |___/ // |_| |_|\___|_| .__/ \___|_| |___/
// | | // | |
// |_| // |_|
@ -930,7 +930,6 @@ const ActivityList = Vue.component('activitylist', {
console.log(day) console.log(day)
var d = dayjs(day, 'MMM DD YYYY') var d = dayjs(day, 'MMM DD YYYY')
convertedDateString = d.format('YYYY-MM-DD') convertedDateString = d.format('YYYY-MM-DD')
console.log(convertedDateString)
return _.findWhere( this.conference, {date1:convertedDateString} ).title return _.findWhere( this.conference, {date1:convertedDateString} ).title
}, },
month_year: function(d) { var b = this.$root.$dj(d).format('MMM D YYYY'); return b }, month_year: function(d) { var b = this.$root.$dj(d).format('MMM D YYYY'); return b },
@ -939,10 +938,10 @@ const ActivityList = Vue.component('activitylist', {
else { this.reversed = false; this.sortby = ss } }, else { this.reversed = false; this.sortby = ss } },
swapme: function(x) { this.editing = x }, swapme: function(x) { this.editing = x },
done_edit: function(id) { this.editing = -1 }, done_edit: function(id) { this.editing = -1 },
am_editing: function(id) { return 1 }, am_editing: function(id) { return 0 },
fetch_myevents: function() { fetch_myevents: function() {
var self = this; var self = this;
basic_get('api2.php?query=app', basic_get('api/app',
function(r2) { function(r2) {
self.mysessions = r2.mysessions self.mysessions = r2.mysessions
self.activities = r2.sessions self.activities = r2.sessions
@ -1012,79 +1011,65 @@ const ActivityList = Vue.component('activitylist', {
var self=this; return _.groupBy(self.mysessions_filtered, function(x) { return self.month_year(x.starttime) } ); }, }, var self=this; return _.groupBy(self.mysessions_filtered, function(x) { return self.month_year(x.starttime) } ); }, },
watch: { }, watch: { },
template: `<div class="activitylist"> template: `<div class="activitylist">
<div v-if="itineraryview" class="itn_now">
<div v-if="am_editing"> Current time is: {{ current_time }}. Return here for the ZOOM links on the day of your sessions.
<div v-for="items,mmyy in activities_g_filtered"> <br /> &nbsp;
<div class="pure-g"> </div>
<div class="day_title pure-u-1-1">{{mmyy}} {{get_day_title(mmyy)}}</div> <div v-if="itineraryview && mysessions_filtered.length==0">
<b>It looks like you haven't signed up for any sessions yet!</b><br /><br />
Go to the <a class="linky" href="act.php">Sessions List</a> to sign up.
</div>
<div v-if="itineraryview && active>0" v-for="items,mmyy in mysessions_g_filtered" class="itn_day">
<b>{{mmyy}} {{get_day_title(mmyy)}}</b>
<div v-for="a in items" class="pure-g itn_item">
<div class="pure-u-1-6 itn_icon">
<a v-if="my_host_ids.includes(a.id)" :href="'ed_act.php?w='+a.id"class="button-inlist-action">Edit</a>
<a v-if="my_host_ids.includes(a.id)" :href="'report.php?s='+a.id"class="button-inlist-action">Info</a>
<a v-if="zoom_on && a.location" :href="a.location" class="button-inlist">Start</a>
<a v-if="survey_on" :href="'survey.php?s='+a.id" class="button-inlist-action">Survey</a>
<!--<span v-if="!survey_on && !zoom_on">{{ $root.$dj(a.starttime).format('h:mma') }}</span>-->
</div>
<div class="pure-u-2-3 itn_info">
<span class="itn_title">{{a.title}}</span>
<span class="itn_body">
{{ $root.$dj(a.starttime).format('h:mma') }}
<span v-if="a.mode=='hybrid'">
- In person at {{a.location_irl}} or
<a :href="a.location">online</a>
</span>
<span v-if="a.mode=='inperson'"> - In person at {{a.location_irl}}</span>
<span v-if="zoom_on && a.mode=='online'"> - <a :href="a.location">Online</a></span>
<span v-if="!zoom_on && a.mode=='online'"> - Online</span>
</span>
<span class="itn_foot"></span>
</div>
<div class="pure-u-1-6 itn_controls"></div>
</div> </div>
</div>
<div v-if="!itineraryview && active>0" v-for="items,mmyy in activities_g_filtered">
<div class="pure-g"><div class="day_title pure-u-1-1">{{mmyy}} {{get_day_title(mmyy)}}</div></div>
<div v-for="a in items" class="activitylist"> <div v-for="a in items" class="activitylist">
<activityinlineedit :which="a.id"></activityinlineedit> <div class="pure-g pure-form">
</div> <div v-if="!static" class="pure-u-5-24">
</div> <a v-if="!static && my_ses_ids.includes(a.id)" v-on:click.prevent="dumpme(a.id)" href="#" class="button-inlist-action">Cancel</a>
</div> <a v-if="!static && !my_ses_ids.includes(a.id)" v-on:click.prevent="joinme(a.id)" href="#" class="button-inlist">Sign&nbsp;Up</a>
<div v-else> <a v-if="my_host_ids.includes(a.id)" :href="'ed_act.php?w='+a.id" class="button-inlist-action">Edit</a>
<div v-if="itineraryview" class="itn_now">
Current time is: {{ current_time }}. Return here for the ZOOM links on the day of your sessions.
<br /> &nbsp;
</div>
<div v-if="itineraryview && mysessions_filtered.length==0">
<b>It looks like you haven't signed up for any sessions yet!</b><br /><br />
Go to the <a class="linky" href="act.php">Sessions List</a> to sign up.
</div>
<div v-if="itineraryview && active>0" v-for="items,mmyy in mysessions_g_filtered" class="itn_day">
<b>{{mmyy}} {{get_day_title(mmyy)}}</b>
<div v-for="a in items" class="pure-g itn_item">
<div class="pure-u-1-6 itn_icon">
<a v-if="my_host_ids.includes(a.id)" :href="'ed_act.php?w='+a.id"class="button-inlist-action">Edit</a>
<a v-if="my_host_ids.includes(a.id)" :href="'report.php?s='+a.id"class="button-inlist-action">Info</a>
<a v-if="zoom_on && a.location" :href="a.location" class="button-inlist">Start</a>
<a v-if="survey_on" :href="'survey.php?s='+a.id" class="button-inlist-action">Survey</a>
<!--<span v-if="!survey_on && !zoom_on">{{ $root.$dj(a.starttime).format('h:mma') }}</span>-->
</div>
<div class="pure-u-2-3 itn_info">
<span class="itn_title">{{a.title}}</span>
<span class="itn_body">
{{ $root.$dj(a.starttime).format('h:mma') }}
<span v-if="a.mode=='hybrid'">
- In person at {{a.location_irl}} or
<a :href="a.location">online</a>
</span>
<span v-if="a.mode=='inperson'"> - In person at {{a.location_irl}}</span>
<span v-if="zoom_on && a.mode=='online'"> - <a :href="a.location">Online</a></span>
<span v-if="!zoom_on && a.mode=='online'"> - Online</span>
</span>
<span class="itn_foot"></span>
</div>
<div class="pure-u-1-6 itn_controls"></div>
</div>
</div>
<div v-if="!itineraryview && active>0" v-for="items,mmyy in activities_g_filtered">
<div class="pure-g"><div class="day_title pure-u-1-1">{{mmyy}} {{get_day_title(mmyy)}}</div></div>
<div v-for="a in items" class="activitylist">
<div class="pure-g pure-form">
<div v-if="!static" class="pure-u-5-24">
<a v-if="!static && my_ses_ids.includes(a.id)" v-on:click.prevent="dumpme(a.id)" href="#" class="button-inlist-action">Cancel</a>
<a v-if="!static && !my_ses_ids.includes(a.id)" v-on:click.prevent="joinme(a.id)" href="#" class="button-inlist">Sign&nbsp;Up</a>
<a v-if="my_host_ids.includes(a.id)" :href="'ed_act.php?w='+a.id" class="button-inlist-action">Edit</a>
</div>
<div class="pure-u-19-24">
<b>{{a.title}}</b><br />
{{ $root.$dj(a.starttime).format('h:mma') }} / {{ mode_string(a) }}<br />
<span v-if="hoststr(a.id)"> Presented by: {{ hoststr(a.id) }}<br /></span>
<span v-if="static && a.location_irl">Location: {{ a.location_irl }}<br /></span>
<span v-if="static && a.location">Zoom Link: <a :href="a.location">{{ a.location }}</a><br /></span>
<br />
<!--<div class="rhs_grey">{{a.typeStr}}</div>-->
<span v-if="expanded" v-html="a.desc"></span>
</div>
</div> </div>
<div class="pure-u-19-24">
<b>{{a.title}}</b><br />
{{ $root.$dj(a.starttime).format('h:mma') }} / {{ mode_string(a) }}<br />
<span v-if="hoststr(a.id)"> Presented by: {{ hoststr(a.id) }}<br /></span>
<span v-if="static && a.location_irl">Location: {{ a.location_irl }}<br /></span>
<span v-if="static && a.location">Zoom Link: <a :href="a.location">{{ a.location }}</a><br /></span>
<br />
<!--<div class="rhs_grey">{{a.typeStr}}</div>-->
<span v-if="expanded" v-html="a.desc"></span>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div>
</div>` }) </div>` })
@ -1189,7 +1174,7 @@ const ChartView = Vue.component('chartview', {
am_editing: function(id) { return 0 }, am_editing: function(id) { return 0 },
fetch_myevents: function() { fetch_myevents: function() {
var self = this; var self = this;
basic_get('api2.php?query=ses/'+self.day, basic_get('api/ses/'+self.day,
function(r2) { function(r2) {
r2 = r2.data r2 = r2.data
self.activities = _.sortBy(r2,function(x) { return x.starttime } ); self.$forceUpdate() self.activities = _.sortBy(r2,function(x) { return x.starttime } ); self.$forceUpdate()
@ -2181,7 +2166,7 @@ var app = new Vue({
computed: { }, computed: { },
mounted: function() { mounted: function() {
var self = this; var self = this;
fetch('api2.php?query=start', { method: 'GET' }).then(function (response) { fetch('api/start', { method: 'GET' }).then(function (response) {
// The API call was successful! // The API call was successful!
if (response.ok) { if (response.ok) {
response.json().then( function(r2) { response.json().then( function(r2) {