# foreach ( session_get_cookie_params () as $key => $val )
# { $MSG .= "key '$key' val '$val'
\n" ; }
# echo $MSG ;
require_once 'session.ppp' ;
require_once 'local.ppp' ;
require_once 'conf.ppp' ;
require_once 'baselib.ppp' ;
require_once 'wwwsec.ppp' ;
require_once 'librepo.ppp' ;
# $DEBUG = 2 ;
# echo session_vars () ;
get_config () ;
# conf_dump () ;
$conn = db_connect_or_die () ;
$TIT = REPO_TIT ( 'repositories' ) ;
if ( $_GET [ 'login' ] or $_POST [ 'login' ] or ( $_SESSION [ 'USER' ] ) )
{ assert_login () ; }
if ( $ADM = GETVAR ( 'ADM' ) ) { switch_actv ( $ADM ) ; }
$ACT = GETVAR ( 'ACT' ) ;
$view = 'form' ;
$view_err = '' ;
$view_upd = '' ;
$view_ack = '' ;
function sort_by_name ( $a, $b )
{ return strcasecmp ( $a -> repo_name (), $b -> repo_name () ) ; }
function gen_repos_tab ()
{ global $USER, $TBL ;
if ( is_adm () )
{ $qwe = '' ; }
elseif ( $USER )
{ $sub = "SELECT gid FROM {$TBL(repo_group_members)} "
. "WHERE pid = '$USER'" ;
$qwe_grps = "gid IN ( $sub )" ;
$groups = get_repo_groups ( '', $qwe_grps, 'name' ) ;
$group_names = "''" ;
if ( count ( $groups ) )
{ $names = array () ;
foreach ( $groups as $group )
{ $names [] = $group -> name ; }
$group_names = sprintf ( "'%s'", implode ( "','", $names ) ) ;
}
$qwe = << info_row () ; }
return BQ ( TAB ( $res ) ) ;
}
if ( ! $USER or $_POST [ 'CANCEL' ] )
{ $view = 'home' ; }
elseif ( $ACT == 'NEW_REPO_FORM' )
{ if ( ! may_create_repo () )
{ html_exit ( "you can't create repositories ($USER)" ) ; }
$repo = new Repo ;
$repo -> set_defaults () ;
}
elseif ( $ACT == 'UPD_REPO_FORM' )
{ $RID = GETVAR ( 'RID' ) ;
if ( ! $RID )
{ $view_err .= UL ( LI ( "no RID" ) ) ; $view = 'home' ; }
else
{ $repo = get_repo ( $RID ) ;
$repo -> assert_is_manager () ;
}
}
elseif ( $ACT == 'GET_FORM' )
{ if ( $id = GETVAR ( 'ID' ) )
{ $repo = get_repo ( $id ) ;
$repo -> assert_is_manager () ;
}
else
{ $repo = new Repo ;
$repo -> set_defaults () ;
}
if ( $err = $repo -> get_form () )
{ $view_err .= $err ; }
elseif ( $repo -> id )
{ $res = $repo -> update () ;
$view_upd .= $res ;
$repo = $repo -> reget () ;
if ( $repo -> side != 'project'
and ! $repo -> rights [ $repo -> ownr ]
)
{ $repo -> add_owner_rights () ;
make_svnaccess_file () ;
$repo = $repo -> reget () ;
}
# maybe I removed myself as manager ...
if ( ! $repo -> is_manager () )
{ $view = 'home' ; }
}
else
{ $res = $repo -> insert () ;
$view_upd .= $res ;
$repo = $repo -> reget () ;
if ( $repo -> side != 'project' )
{ $repo -> add_owner_rights () ;
$repo = $repo -> reget () ;
}
make_svnaccess_file () ;
}
}
elseif ( $ACT == 'DEL' )
{ $RID = GETVAR ( 'RID' ) ;
if ( ! $RID )
{ $view_upd .= UL ( LI ( "no RID" ) ) ; $view = 'home' ; }
elseif ( $repo = try_repo ( $RID ) )
{ $repo -> assert_is_manager () ;
$view_ack .= $repo -> gen_form_del_ack ( 'DEL_ACK' ) ;
$view = 'del_ack' ;
}
else
{ $view_err .= UL ( LI ( "can't find repository $RID" ) ) ;
$view = 'home' ;
}
}
elseif ( $ACT == 'DEL_ACK' )
{ $RID = GETVAR ( 'RID' ) ;
if ( ! $RID )
{ $view_err .= UL ( LI ( "no RID" ) ) ; $view = 'home' ; }
elseif ( $repo = try_repo ( $RID ) )
{ $repo -> assert_is_manager () ;
if ( $_POST [ 'YES' ] )
{ $view_upd .= $repo -> delete () ; $view = 'home' ; }
else
{ $view_upd .= UL ( LI ( "canceled delete" ) ) ; }
}
else
{ $view_upd .= UL ( LI ( "can't find repository $RID" ) ) ;
$view = 'home' ;
}
}
elseif ( $ACT )
{ $view_err .= BLD ( "unknown ACT ($ACT)" ) ;
$view = 'home' ;
}
else
{ $view = 'home' ; }
html_start ( $TIT ) ;
if ( $view_err )
{ echo H2 ( RED ( 'error' ) ) ; echo RED ( $view_err ) ; }
if ( $view_upd )
{ echo H3 ( 'updates' ) ; echo RED ( $view_upd ) ; }
if ( $view == 'home' )
{ $class = Conf ( 'clases' ) ;
$dscr = $class [ $CLAS ] -> dscr ;
$msg = "$dscr can't create repositories" ;
# echo ULc ( ! $USER, LI ( 'to see more : ' . login_url () ) ) ;
# echo H3 ( ( $USER ? '' : 'public ' ) . 'repositories' ) ;
echo ULc ( $USER, LI2 ( may_create_repo (), new_repo_url (), $msg ) ) ;
echo gen_repos_tab () ;
}
elseif ( $view == 'form' )
{ $id = $repo -> id ;
$rev = $repo -> revision () ;
$stts = $repo -> cnt_stats () ;
$name = $id ? $repo -> repo_name () : 'undefined' ;
if ( $stts > 1 )
{ echo BQ ( $repo -> plot_url ( '' ) ) ; }
echo H3 ( $id ? "update $name" : 'create a new repository' ) ;
echo ULcc ( LIc ( $id, $repo -> del_url () ) ) ;
echo BQ ( $repo -> gen_form ( 'GET_FORM' ) ) ;
if ( $id and $rev == 0 )
{ echo H3 ( 'svn load' ) ;
echo BQ ( $repo -> load_form () ) ;
}
}
elseif ( $view == 'del_ack' )
{ echo H4 ( 'confirm' ) ;
echo $view_ack ;
}
else
{ html_exit ( "unknown view ($view)" ) ; }
html_end () ;
# phpinfo() ;
?>