]> git.plutz.net Git - rawnet/blobdiff - page_channel.sh
refactoring: fewer global variables, manage all url parsing in index.cgi, split some...
[rawnet] / page_channel.sh
index 89720d2acb9faa74a84ca9bc12c6fb760d193416..1720276c3df252e7a1eb3423a63036e5fffc4ece 100755 (executable)
@@ -1,35 +1,12 @@
 #!/bin/sh
 
-. "$_EXEC/db_channel.sh"
-. "$_EXEC/db_video.sh"
-
-channel='' video='' action=''
-path_info="$PATH_INFO"
-path_info="${path_info#/channel/}"
-if [ "$(checkid "${path_info%%/*}")" ]; then
-  channel="${path_info%%/*}"
-  path_info="${path_info#*/}"
-fi
-if [ "$(checkid "${path_info%%/*}")" ]; then
-  video="${path_info%%/*}"
-  path_info="${path_info#*/}"
-fi
-action="${path_info}"
-unset path_info
-
-read_channel "$channel" \
-&& vid_db="${_DATA}/${CHANNEL_ID}/videos.db"
+["$includepage_channel" ] && return 0
+includepage_channel="$0"
 
-AUTHOR(){
-  if [ "$CHANNEL_ID" -a "$USER_ID" -a ! "${CHANNEL_AUTHORS##*${USER_ID}*}" ]; then
-    return 0
-  else
-    return 1
-  fi
-}
+. "$_EXEC/db_channel.sh"
+. "$_EXEC/widgets.sh"
 
-# Video
-# ID   NAME    DESCRIPTION     RESX    RESY    LENGTH  COVER   STATUS  UPLOADER        HITS
+read_channel "$channel"
 
 [ "$REQUEST_METHOD" = POST ] && case "$(POST action)" in
   newchannel)
@@ -43,13 +20,13 @@ AUTHOR(){
     fi
     ;;
   update_channel)
-    if [ ! "$channel" ]; then
+    if [ ! "$CHANNEL_ID" ]; then
       REDIRECT "${_BASE}/channel/#ERROR_NOCHANNEL"
     elif [ ! "$USER_ID" ]; then
       REDIRECT "${_BASE}/channel/$CHANNEL_ID/#ERROR_NOTLOGGEDIN"
     elif ! AUTHOR; then
       REDIRECT "${_BASE}/channel/$CHANNEL_ID/#ERROR_UPDATE_NOTALLOWED"
-    elif update_channel "$channel" "name=$(POST name)" \
+    elif update_channel "$CHANNEL_ID" "name=$(POST name)" \
                         "description=$(POST description)" \
                         "authors=$USER_ID"; then
       REDIRECT "${_BASE}/channel/$CHANNEL_ID/"
@@ -61,6 +38,7 @@ AUTHOR(){
     REDIRECT "${_BASE}/channel/$CHANNEL_ID/"
     ;;
   newvideo)
+    . "$_EXEC/db_video.sh"
     video="$(POST video |checkid)"
 
     AUTHOR \
@@ -68,82 +46,21 @@ AUTHOR(){
 
     if [ ! "$video" ]; then
       REDIRECT "${_BASE}/channel/$CHANNEL_ID/#ERROR_INVALID_ID"
-    elif [ ! "$channel" ]; then
+    elif [ ! "$CHANNEL_ID" ]; then
       REDIRECT "${_BASE}/channel/#ERROR_NOCHANNEL"
     elif [ ! "$USER_ID" ]; then
       REDIRECT "${_BASE}/channel/$CHANNEL_ID/#ERROR_NOTLOGGEDIN"
     elif ! AUTHOR; then
       REDIRECT "${_BASE}/channel/$CHANNEL_ID/#ERROR_UPDATE_NOTALLOWED"
     elif new_video "$video"; then
-      REDIRECT "${_BASE}/channel/$CHANNEL_ID/${video}/"
+      REDIRECT "${_BASE}/channel/$CHANNEL_ID/$video/"
     else
       REDIRECT "${_BASE}/channel/$CHANNEL_ID/#ERROR_NEWVIDEO_NOLOCK"
     fi
     ;;
 esac
 
-w_video(){
-  local thumb
-  local VIDEO_ID VIDEO_NAME VIDEO_DESCRIPTION VIDEO_RESX VIDEO_RESY \
-        VIDEO_LENGTH VIDEO_COVER VIDEO_STATUS VIDEO_UPLOADER VIDEO_HITS \
-        VIDEO_DESCR_CACHE VIDEO_FUTUREUSE
-
-  if read_video; then
-    VIDEO_LENGTH="${VIDEO_LENGTH%.*}"
-    [ "${VIDEO_STATUS}" = public ] || AUTHOR || return 0
-
-    thumb="${_BASE}/video/${CHANNEL_ID}/${VIDEO_ID}.thumb.jpg"
-    [ "$NAME" = \\ ] && NAME="(Unnamed Video)"
-    printf '[div .video .thumb
-              [a href="%s/channel/%s/%s/"
-                [h3 . %s]
-                [figure [img src="%s" alt=""]]
-                [span .duration . %i:%02i]
-                [div .description . %s]
-              ]
-            ]' "$_BASE" "$CHANNEL_ID" "$VIDEO_ID" \
-               "$(HTML "${VIDEO_NAME:-(Unnamed Video)}")" \
-               "$thumb" \
-               "$((VIDEO_LENGTH / 60))" "$((VIDEO_LENGTH % 60))" \
-               "$(UNSTRING "$DESCR_CACHE")"
-  else
-    return 1
-  fi
-}
-
-w_channel_list(){
-  local vid_db
-  local CHANNEL_ID CHANNEL_NAME CHANNEL_DESCRIPTION CHANNEL_LOGO \
-        CHANNEL_THEME CHANNEL_AUTHORS CHANNEL_DESCR_CACHE CHANNEL_FUTUREUSE
-
-  [ "$USER_ID" ] && cat <<-EOF
-       [form .channel .newchannel method=POST
-         [hidden "channel" "$(timeid)"]
-         [submit "action" "newchannel" New Channel]
-       ]
-       EOF
-
-  [ -f "$chan_db" -a -r "$chan_db" ] \
-  && while read_channel; do
-    vid_db="${_DATA}/${CHANNEL_ID}/videos.db"
-
-    cat <<-EOF
-       [div .channel
-         [div .description
-           [h2 [a href="${_BASE}/channel/${CHANNEL_ID}/" $(HTML "${CHANNEL_NAME:-(Unnamed Channel)}")]]
-           ${CHANNEL_DESCR_CACHE}
-         ]$(
-            [ -f "$vid_db" -a -r "$vid_db" ] \
-           && while w_video; do :; done <"$vid_db"
-         )
-       ]
-       EOF
-  done <"$chan_db"
-}
-
-if [ "$channel" -a "$video" ]; then
-  . ${_EXEC}/page_video.sh
-elif [ "$channel" -a "$action" = edit ]; then
+if [ "$CHANNEL_ID" -a "$action" = edit ]; then
   AUTHOR || REDIRECT "${_BASE}/$CHANNEL_ID/#ERROR_EDIT_NOTALLOWED"
   yield_page "$CHANNEL_NAME - Edit" "channel edit" <<-EOF
        [form .channel .edit method=POST
@@ -153,7 +70,8 @@ elif [ "$channel" -a "$action" = edit ]; then
          [submit "action" "update_channel_cancel" . Cancel]
        ]
        EOF
-elif [ "$channel" ]; then
+elif [ "$CHANNEL_ID" ]; then
+  vid_db="$_DATA/$CHANNEL_ID/videos.db"
   yield_page "$CHANNEL_NAME" "channel" <<-EOF
        [nav [a href="../" Channels] - [span $(HTML "${CHANNEL_NAME:-(Unnamed Channel)}")]
          $(AUTHOR && printf ' - [a href="edit" edit]')
@@ -163,16 +81,24 @@ elif [ "$channel" ]; then
        [h1 .videos Videos]
        [div .videos . $(
          AUTHOR && printf '
-             [form .video .newvideo method=POST
-               [hidden "video" "%s"]
-               [submit "action" "newvideo" New Video]
-             ]' "$(timeid)"
+            [form .video .newvideo method=POST
+              [hidden "video" "%s"]
+              [submit "action" "newvideo" New Video]
+            ]' "$(timeid)"
          [ -f "$vid_db" -a -r "$vid_db" ] \
-         && while w_video "$ID"; do :; done <"$vid_db"
+         && while w_video; do :; done <"$vid_db"
        )]
        EOF
 else
   yield_page "Channels" "channels" <<-EOF
-       $(w_channel_list)
+       $([ "$USER_ID" ] && printf '
+         [form .channel .newchannel method=POST
+           [hidden "channel" "%s"]
+           [submit "action" "newchannel" New Channel]
+         ]' "$(timeid)"
+       )
+       $([ -f "$chan_db" -a -r "$chan_db" ] \
+         && while w_channel; do :; done <"$chan_db"
+       )
        EOF
 fi