/*
main.php is the main switchboard for the ipp application:
all actions (viewing, deleting, editting, committing content) go through here.
to perform the action required, a few steps are performed:
1. include all necessary files
2. initialize global variables (globs for config properties, db for database access, objParserStorage for parser variables)
3. determine subject (get obj_id), action and framework template
4. determine subsite
5. feed global information to parser
6. make log entry
7. determine what piece of code to call to perform required action
8. closure and clean up
*/
function microtime_float() {
// from http://nl3.php.net/manual/en/function.microtime.php
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
$disclaimer_obj_id=-1;
//init performance counters
$start_timer=microtime_float();
$number_of_queries=0;
$number_of_update_queries=0;
$number_of_parser_calls=0;
$update_statements="";
$select_statements="";
$number_of_sql_checks=0;
// site config
require 'Globals.php';
// and corresponding global instance of it
$globs = new Globals;
session_start();
// include core libraries
require $globs->code_dir.'core_php/inc_core.php';
$strBrowser=strtolower(strGetBrowser());
$objParserStorage = new Storage;
$db = new DbConnect;
/* hack for prototyping different skins.
if (requestcp("skin","")!="") {
$_SESSION["skin"]=requestcp("skin","default");
}
*/
$strObjId="-1";
$caller_id=-1;
// kijk of er met friendly urls wordt gewerkt!
// go get url and session parameters
$strObjId = requestcp("obj_id","-1");
$caller_id = intval(requestcp("caller_obj_id","-1"));
// shoud we get obj_id from a session?
// an obj_id starting with _enc_ is a session refering key.
if ((requestcp("action","")=="update_data") && $globs->id_masking_enabled) {
$strObjId=getEncValue(str_replace("_enc_","",$strObjId));
}
// is obj id numeric?
if (!is_numeric($strObjId)) {
write2log('obj_id_not_numeric', 'invoked from main');
print displayTemplate("obj_not_found");
$db->close();
die();
}
if (requestcp("display_framework","")=="") {
// no framework requested, set defaults to: template/action=main/display_data if obj_id!="" or name!="",
// else template/action=startpagina/display_data
if (($strObjId=="-1") && (requestcp("action","empty")=="empty")) {
$strTemplateName=requestcp("name","startpagina");
} else {
$strTemplateName=requestcp("name","main");
}
$strAction = requestcp("action", "display_template");
} else {
// framework requested, default action set to display_template
$strTemplateName=requestcp("display_framework","");
$strAction = requestcp("action", "display_template");
}
$strUserId=sessiond("user_id", $globs->default_user_id);
//$strUserId is hier '2'; FH 9mrt06
//die($strUserId);
// controleer of ntlm authenticatie een optie is
// echo "\n";
// echo "\n";
if ($globs->authentication_type=="ntlm") {
//echo "\n";
}
if (($globs->authentication_type=="ntlm") && ($strUserId==$globs->default_user_id)) {
// echo "\n";
$strNTLogin=strtolower(strGetNtLogin());
// echo "\n";
if (!booTryToLoginOnNTAccount($strNTLogin)) {
/*
Er kon geen login op NT account uitgevoerd worden,
de gebruiker blijft ingelogd op het guestaccount.
Echter, als de gebruiker op de hoogte gesteld moet worden van een falend account,
dan is hier een uitermate geschikte om dat te doen.
*/
// echo "account stuk [".$strNTLogin."] ?
";
}
// echo "\n";
}
// define subsite vars and determine which subsite applies
$strSubsiteId="-1";
$intSubsiteStartPageObjId=-1;
$strSubsiteName="[undefined]";
$strSubsiteDescription="[undefined]";
$intSubsiteRootMenuId=-1;
$intSubsiteDisclaimerId=-1;
searchAndFillSubsiteParams();
//$strObjId = 151618749; FH 9mrt06
if (($strObjId=="-1") && ($strTemplateName=="startpagina")) {
// no obj id, pak startpagina.
$strObjId=strval($intSubsiteStartPageObjId);
}
// can we load obj id in to an entity?
$entity=new Entity();
if (($strObjId!="-1") && ($strObjId!="")) {
$entity->setDb($db);
if (!$entity->booPopulate(intval($strObjId))) {
write2log('obj_id_not_found', 'invoked from main');
print displayTemplate("obj_not_found");
$db->close();
die();
}
}
$arrLinkedFromMenu[0]=-1;
$intGeslecteerdTopMenu=-1;
$intGeslecteerdEersteMenu=-1;
$intGeslecteerdTweedeMenu=-1;
if ($strObjId!="-1") {
fillLinkedFromMenu($arrLinkedFromMenu, intval($strObjId));
} else {
fillLinkedFromMenu($arrLinkedFromMenu, $caller_id);
}
//echo $intGeslecteerdTopMenu.",".$intGeslecteerdEersteMenu."
";
// onload event handler
$strOnLoad="";
// feed parser basic information
strparse("{set var=\"browser\" val=\"".$strBrowser."\"}");
strparse("{set var=\"obj_id\" val=\"".$strObjId."\"}");
strparse("{set var=\"caller_obj_id\" val=\"".$caller_id."\"}");
strparse("{set var=\"source_id\" val=\"-1\"}");
strparse("{set var=\"current_id\" val=\"".$strObjId."\"}");
strparse("{set var=\"subsite_id\" val=\"".$strSubsiteId."\"}");
strparse("{set var=\"portal_page_obj_id\" val=\"".$intSubsiteStartPageObjId."\"}");
strparse("{set var=\"disclaimer_obj_id\" val=\"".$intSubsiteDisclaimerId."\"}");
strparse("{set var=\"subsite_name\" val={".$strSubsiteName."}}");
strparse("{set var=\"root_menu_id\" val={".$intSubsiteRootMenuId."}}");
strparse("{set var=\"link_from_menu_id\" val={".$arrLinkedFromMenu[0]."}}");
strparse("{set var=\"geselecteerd_menu_id_top_menu\" val={".$intGeslecteerdTopMenu."}}");
strparse("{set var=\"geselecteerd_menu_id_eerste_menu\" val={".$intGeslecteerdEersteMenu."}}");
strparse("{set var=\"geselecteerd_menu_id_tweede_menu\" val={".$intGeslecteerdTweedeMenu."}}");
strparse("{set var=\"obj_type_id\" val={".$entity->obj_type_id."}}");
strparse("{set var=\"template_name\" val={".$strTemplateName."}}");
strparse("{set var=\"user_id\" val={".$strUserId."}}");
// log request to main
write2log('main', 'invoked from main');
//ipp controller
if (booValidIp("view")) {
switch($strAction){
case "login_check":
if (!booTryToLogin(requestc("login", "[element not found]"),requestc("wachtwoord", "[element not found]"))) {
print displayTemplate("onbekende_login");
// try again
print displayTemplate("inlog");
} else {
// login succeeded
if (requestcp("redirect","[element not found]")=="[element not found]") {
// no redirect parameter found, redirect to index page,
echo("meenphp: ingelogd");
print displayTemplate("startpagina");
} else {
// redirect to requested page
header("Location: ".requestcp("redirect",""));
exit();
}
}
break;
case "faq_zeeburg":
echo displayTemplate($strTemplateName);
break;
case "display_template":
echo displayTemplate($strTemplateName);
//die("meenphp: klaar met de startpagina");
break;
case "display_data":
print displayTemplate($strTemplateName);
break;
case "edit_data":
if (booValidIp("edit")) {
print displayTemplate($strTemplateName);
} else {
print displayTemplate("magniet");
}
break;
case "delete_data":
if (booValidIp("edit")) {
print displayTemplate($strTemplateName);
} else {
print displayTemplate("magniet");
}
break;
case "commit_data":
if (booValidIp("edit")) {
print displayTemplate($strTemplateName);
} else {
print displayTemplate("magniet");
}
break;
case "copy_data":
if (booValidIp("edit")) {
print displayTemplate($strTemplateName);
} else {
print displayTemplate("magniet");
}
break;
case "display_edit":
if (booValidIp("edit")) {
print displayTemplate($strTemplateName);
} else {
print displayTemplate("magniet");
}
break;
case "update_data":
if (booValidIp("edit")) {
print updateData(intval($strObjId), $db);
} else {
print displayTemplate("magniet");
}
break;
case "display_archive_summary":
if (booValidIp("edit")) {
print displayTemplate($strTemplateName);
} else {
print displayTemplate("magniet");
}
break;
case "display_archive":
if (booValidIp("edit")) {
print displayTemplate($strTemplateName);
} else {
print displayTemplate("magniet");
}
break;
case "rollback":
if (booValidIp("edit")) {
print displayTemplate($strTemplateName);
} else {
print displayTemplate("magniet");
}
break;
case "image_editor":
$strSuffix=requestc("suffix","");
if (booValidIp("edit")) {
voidDisplayImage($db,$strSuffix);
} else {
print displayTemplate("magniet");
}
break;
case "hyperlink_editor":
$strSuffix=requestc("suffix","");
if (booValidIp("edit")) {
voidDisplayHyperlinkEditor($db,$strSuffix);
} else {
print displayTemplate("magniet");
}
break;
case "file_select":
if (booValidIp("edit")) {
voidDisplayFileSelect($db);
} else {
print displayTemplate("magniet");
}
break;
case "editor":
if (booValidIp("edit") && ($globs->wysiwyg_enabled)) {
voidDisplayEditor($db);
} else {
print displayTemplate("magniet");
}
break;
case "stylesheet_select":
if (booValidIp("edit")) {
voidDisplayStyleSheetSelectie($db);
} else {
print displayTemplate("magniet");
}
break;
case "tree_editor":
if (booValidIp("edit")) {
voidDisplayTreeEditor();
} else {
print displayTemplate("magniet");
}
break;
case "menu_editor":
if (booValidIp("edit")) {
voidDisplayMenuEditor();
} else {
print displayTemplate("magniet");
}
break;
case "expression_editor":
if (booValidIp("edit")) {
$strField=requestcp("field","[no value]");
$strFormName=requestcp("form_name","[no value]");
$intCallerObjId=intval(requestcp("parent_source_id","-1"));
voidDisplayExpressionEditor($intCallerObjId, $strField, $strFormName);
} else {
print displayTemplate("magniet");
}
break;
case "action_editor":
if (booValidIp("edit")) {
$strField=requestcp("field","[no value]");
$strFormName=requestcp("form_name","[no value]");
$intCallerObjId=intval(requestcp("caller_obj_id","-1"));
voidDisplayActionEditor($intCallerObjId, $strField, $strFormName);
} else {
print displayTemplate("magniet");
}
break;
case "url_editor":
if (booValidIp("edit")) {
$strField=requestcp("field","[no value]");
$strFormName=requestcp("form_name","[no value]");
voidDisplayUrlEditor($strField, $strFormName);
} else {
print displayTemplate("magniet");
}
break;
case "variable_editor":
if (booValidIp("edit")) {
$strField=requestcp("field","[no value]");
$strFormName=requestcp("form_name","[no value]");
voidDisplayVariableEditor($strField, $strFormName);
} else {
print displayTemplate("magniet");
}
break;
case "location_editor":
if (booValidIp("edit")) {
voidLocationEditor(intval($strObjId));
} else {
print displayTemplate("magniet");
}
break;
case "multiple_choice_editor":
if (booValidIp("edit")) {
$strField=requestcp("field","[no value]");
$strFormName=requestcp("form_name","[no value]");
$intCallerObjId=intval(requestcp("caller_obj_id","-1"));
voidDisplayMultipleChoiceEditor($intCallerObjId, $strField, $strFormName);
} else {
print displayTemplate("magniet");
}
break;
case "relation_add":
if (booValidIp("edit")) {
voidAddRelation(requestcp("source_obj_id","-1"));
} else {
print displayTemplate("magniet");
}
break;
case "relation_add_commit":
if (booValidIp("edit")) {
voidCommitRelation(requestcp("source_obj_id","-1"),requestcp("target_obj_id","-1"),requestcp("relation_type_id","-1"),requestcp("source_obj_id","0"));
} else {
print displayTemplate("magniet");
}
break;
case "relation_delete":
if (booValidIp("edit")) {
voidDeleteRelation(requestcp("source_obj_id","-1"),requestcp("target_obj_id","-1"),requestcp("relation_type_id","-1"));
} else {
print displayTemplate("magniet");
}
break;
case "quick_add":
if (booValidIp("edit")) {
voidQuickAdd(requestcp("obj_type_id","-1"),requestcp("source_form",""),requestcp("source_field",""));
} else {
print displayTemplate("magniet");
}
break;
case "build_obj_ids":
// dit moet in een productieomgeving geremarked worden!
if (booValidIp("edit")) {
buildObjIds($_REQUEST["obj_type_id"]);
} else {
print displayTemplate("magniet");
}
break;
case "do_questionnaire":
print displayTemplate($strTemplateName);
break;
case "questionnaire_editor":
if (booValidIp("edit")) {
voidDisplayQuestionnaireEditor();
} else {
print displayTemplate("magniet");
}
break;
case "permission_editor":
if (booValidIp("edit")) {
voidDisplayPermissionEditor(intval($strObjId),requestc("perms",""),intval(requestc("menu_id","-1")));
} else {
print displayTemplate("magniet");
}
break;
case "owner_editor":
if (booValidIp("edit")) {
voidDisplayOwnerEditor(intval($strObjId),intval(requestc("obj_type_id","")));
} else {
print displayTemplate("magniet");
}
break;
case "update_user_permissions":
if (booValidIp("edit")) {
voidUpdateUserPermissions(intval($strObjId),requestc("obj_type_id",""),intval(requestc("loginId","")));
} else {
print displayTemplate("magniet");
}
echo "";
break;
case "update_object_permissions":
if (booValidIp("edit")) {
voidUpdateObjectPermissions(intval($strObjId),requestc("perms",""),intval(requestc("menu_id","-1")));
} else {
print displayTemplate("magniet");
}
echo "";
break;
case "cancel_session":
if (booValidIp("edit")) {
voidCancelSession(intval(requestc("session_id","-1")));
header("HTTP/1.1 307 Temporary Redirect");
header("Location: ".requestc("redirect","main.php"));
} else {
print displayTemplate("magniet");
}
break;
case "tree_aja":
if (booValidIp("edit")) {
$strMode=requestc("mode","");
voidTreeAjaSwitchBoard($strMode);
} else {
print displayTemplate("magniet");
}
break;
case "menu_aja":
if (booValidIp("edit")) {
voidTreeAjaSwitchBoard("menu_editor");
} else {
print displayTemplate("magniet");
}
break;
case "single_upload":
if (booValidIp("edit")) {
voidDoSingleUpload();
} else {
print displayTemplate("magniet");
}
break;
case "search":
print displayTemplate($strTemplateName);
break;
case "xmlwrap":
header("Content-type: application/xhtml+xml");
voidDisplayXmlWrapper(intval(requestc("id","-1")),requestc("mode",""));
break;
case "import":
if (booValidIp("edit")) {
voidImport(requestc("url",""),requestc("mode","obj"));
} else {
print displayTemplate("magniet");
}
break;
case "clean_db":
if (booValidIp("edit")) {
if (booCheckPermission("tree_editor","edit",$db)) {
echo "start clean up...
";
cleanObjTable();
echo "clean up finished...
";
}
}
break;
default:
print displayTemplate("index");
}// switch
} else {
// No ip view rights.
echo "No access granted.";
}
// close open connections
$entity->close();
$db->close();
$objParserStorage->close();
// make a note of process time
$end_timer=microtime_float();
// write performance counters, if required
if ($globs->debug_level>=3) {
$diff_timer=$end_timer-$start_timer;
echo "execution took: ".$diff_timer. " seconds
";
echo "aantal db queries: ".$number_of_queries. "
";
echo "aantal update db queries: ".$number_of_update_queries. "
";
echo "aantal parser calls: ".$number_of_parser_calls. "
";
echo "executed select statements:
".str_replace("\n","
", $select_statements);
echo "executed update statements:
".str_replace("\n","
", $update_statements);
}
/*
maatwerk functies
moeten per club worden aangepast of worden verwijderd.
*/
function strJITFilter($strResult) {
return $strResult;
}
?>