# 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 () ; }
html_start ( $TIT ) ;
$ACT = GETVAR ( 'ACT' ) ;
$do_home = 0 ;
$do_form = 1 ;
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' ] )
{ $do_home = 1 ; }
elseif ( $ACT == 'SWTCHON' or $ACT == 'SWTCHOFF' )
{ assert_isroot () ;
actv_root ( $ACT == 'SWTCHON' ? 't' : 'f' ) ;
$do_home = 1 ;
}
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 )
{ echo H2 ( RED ( 'error' ) ) ;
echo UL ( LI ( "no RID" ) ) ;
$do_home = 1 ;
}
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 () )
{ echo H2 ( RED ( 'error' ) ) ;
echo RED ( $err ) ;
}
elseif ( $repo -> id )
{ $res = $repo -> update () ;
echo H4 ( 'updates' ) ;
echo RED ( $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 ...
$do_home = ! $repo -> is_manager () ;
}
else
{ $res = $repo -> insert () ;
echo H4 ( 'updates' ) ;
echo RED ( $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 )
{ echo H2 ( RED ( 'error' ) ) ;
echo RED ( UL ( LI ( "no RID" ) ) ) ;
$do_home = 1 ;
}
elseif ( $repo = try_repo ( $RID ) )
{ $repo -> assert_is_manager () ;
echo H4 ( 'confirm' ) ;
echo $repo -> gen_form_del_ack ( 'DEL_ACK' ) ;
$do_form = 0 ;
}
else
{ echo H4 ( 'updates' ) ;
echo UL ( LI ( RED ( "can't find repository $RID" ) ) ) ;
$do_home = 1 ;
}
}
elseif ( $ACT == 'DEL_ACK' )
{ $RID = GETVAR ( 'RID' ) ;
if ( ! $RID )
{ echo H2 ( RED ( 'error' ) ) ;
echo RED ( UL ( LI ( "no RID" ) ) ) ;
$do_home = 1 ;
}
elseif ( $repo = try_repo ( $RID ) )
{ $repo -> assert_is_manager () ;
echo H4 ( 'updates' ) ;
if ( $_POST [ 'YES' ] )
{ echo RED ( $repo -> delete () ) ;
$do_home = 1 ;
}
else
{ echo UL ( LI ( RED ( "canceled delete" ) ) ) ; }
}
else
{ echo H4 ( 'updates' ) ;
echo UL ( LI ( RED ( "can't find repository $RID" ) ) ) ;
$do_home = 1 ;
}
}
elseif ( $ACT )
{ echo BLD ( RED ( "unknown ACT ($ACT)" ) ) ;
$do_home = 1 ;
}
else
{ $do_home = 1 ; }
if ( $do_home )
{ $class = Conf ( 'clases' ) ;
$dscr = $class [ $CLAS ] -> dscr ;
$msg = "$dscr can't create repositories" ;
$admin = RED ( 'admin' ) . ' → ' ;
echo UL
( LIc ( is_adm (), conf_url () )
. LIc ( isroot (), stats_url () )
. LIc ( isroot (), switch_url () )
) ;
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 ( $do_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 () ) ;
}
}
html_end () ;
# phpinfo() ;
?>