<?php $microstart = explode(' ',microtime()); $start_time = $microstart[0] + $microstart[1]; error_reporting(E_ALL ^ E_NOTICE); ini_set("display_errors","1"); define('APP_NAME', 'app_achievements_admin'); require_once('../config.php'); include_once('../lang.php'); include_once('lang.php'); require_once('conf.php'); // Ask to authenticate user (using ingame or session method) and fill $user with all information ryzom_app_authenticate($user, true); #echo var_export($user,true); /*$user = array(); $user['id'] = 1; $user['lang'] = 'en'; $user['name'] = 'Talvela'; $user['race'] = "r_matis"; $user['civilization'] = "c_neutral"; $user['cult'] = "c_neutral"; $user['admin'] = true;*/ require_once($_CONF['app_achievements_path']."class/RyzomUser_class.php"); require_once("class/RyzomAdmin_class.php"); $_ADMIN = new RyzomAdmin($user); if($_ADMIN->isIG()) { die("IG disabled for admin tool!"); } require_once("class/mySQL_class.php"); require_once($_CONF['app_achievements_path']."include/ach_render_common.php"); require_once($_CONF['app_achievements_path']."class/DLL_class.php"); require_once($_CONF['app_achievements_path']."class/Node_abstract.php"); require_once($_CONF['app_achievements_path']."class/AVLTree_class.php"); require_once($_CONF['app_achievements_path']."class/Parentum_abstract.php"); require_once($_CONF['app_achievements_path']."class/AchList_abstract.php"); require_once($_CONF['app_achievements_path']."class/Tieable_inter.php"); require_once($_CONF['app_achievements_path']."class/NodeIterator_class.php"); #require_once($_CONF['app_achievements_path']."class/InDev_trait.php"); require_once($_CONF['app_achievements_path']."class/AchMenu_class.php"); require_once($_CONF['app_achievements_path']."class/AchMenuNode_class.php"); require_once($_CONF['app_achievements_path']."class/AchCategory_class.php"); require_once($_CONF['app_achievements_path']."class/AchAchievement_class.php"); require_once($_CONF['app_achievements_path']."class/AchTask_class.php"); require_once($_CONF['app_achievements_path']."class/AchObjective_class.php"); require_once($_CONF['app_achievements_path']."class/AchSummary_class.php"); require_once("class/ADM_inter.php"); #require_once("class/AdmDispatcher_trait.php"); require_once("class/AdmMenu_class.php"); require_once("class/AdmMenuNode_class.php"); require_once("class/AdmCategory_class.php"); require_once("class/AdmAchievement_class.php"); require_once("class/AdmTask_class.php"); require_once("class/AdmObjective_class.php"); require_once("class/AdmAtom_class.php"); #require_once("class/CSRDispatcher_trait.php"); require_once("class/CSR_inter.php"); require_once("class/CSRCategory_class.php"); require_once("class/CSRAchievement_class.php"); require_once("class/CSRTask_class.php"); require_once("class/CSRObjective_class.php"); require_once("class/CSRAtom_class.php"); $DBc = ryDB::getInstance("app_achievements"); function mkn($x) { // make NULL function for SQL global $DBc; if($x == null || strtolower($x) == "null" || $x == "") { return "NULL"; } else { return "'".$DBc->sqlEscape($x)."'"; } } $c = "<script type='text/javascript'> function hs(id,mod) { // hide / show if(document.getElementById(id).style.display == 'none') { document.getElementById(id).style.display=mod; } else { document.getElementById(id).style.display='none'; } } function hs_force(id,mod,show) { // hide / show forced if(show == true) { document.getElementById(id).style.display=mod; } else { document.getElementById(id).style.display='none'; } } </script> <style> h1 { margin-top:0px; } </style> <center><table width='100%'> <tr> <td valign='top' width='200px'><div style='font-weight:bold;font-size:14px;'>"; if($_ADMIN->isAdmin()) { $c .= "<b>Admin</b><br> <ul> <li><a href='?mode=menu'>menu settings</a></li> <li><a href='?mode=ach'>achievement settings</a></li> <li><a href='?mode=atom'>trigger settings</a></li> <li><a href='?mode=lang'>language editor</a></li> <li><a href='?mode=stats'>statistics</a></li> </ul><p />"; } if($_ADMIN->isCSR()) { $c .= "<b>CSR</b><br> <ul> <li><a href='?mode=player'>player administration</a></li> </ul><p />"; } $c .= "</div></td> <td valign='top'>"; /*if($_REQUEST['mode'] == "insert_fame" && $_ADMIN->isAdmin()) { $ftpl = 'ENTITY fame AS $fame { if($fame->faction == ".faction" && ceil($fame->fame/6000) >= [0]) { GRANT; FINAL ENTITY; } }'; $res = $DBc->sqlQuery("SELECT at_id,atl_name FROM ach_achievement,ach_task,ach_task_lang WHERE at_achievement=aa_id AND ((aa_category<'24' AND aa_category>'15') OR aa_category='56') AND atl_task=at_id AND atl_lang='en'"); for($i=0;$i<sizeof($res);$i++) { $DBc->sqlQuery("INSERT INTO ach_objective (ao_task,ao_condition,ao_value,ao_display,ao_metalink) VALUES ('".$res[$i]['at_id']."','all',NULL,'hidden',NULL)"); $nid = $DBc->insertID(); $DBc->sqlQuery("INSERT INTO ach_atom (atom_objective,atom_mandatory,atom_ruleset) VALUES ('".$nid."','0','".$DBc->sqlEscape(str_replace('[0]',$res[$i]['atl_name'],$ftpl))."')"); $c .= "INSERT INTO ach_objective (ao_task,ao_condition,ao_value,ao_display,ao_metalink) VALUES ('".$res[$i]['at_id']."','all',NULL,'hidden',NULL)<br>"; $c .= "INSERT INTO ach_atom (atom_objective,atom_mandatory,atom_ruleset) VALUES ('".$nid."','0','".$DBc->sqlEscape(str_replace('[0]',$res[$i]['atl_name'],$ftpl))."')<p>"; } } if($_REQUEST['mode'] == "enable_fame" && $_ADMIN->isAdmin()) { $res = $DBc->sqlQuery("SELECT aa_id FROM ach_achievement WHERE (aa_category<'24' AND aa_category>'14') OR aa_category='56'"); for($i=0;$i<sizeof($res);$i++) { $DBc->sqlQuery("UPDATE ach_achievement SET aa_dev='0' WHERE aa_id='".$res[$i]['aa_id']."'"); $DBc->sqlQuery("UPDATE ach_task SET at_dev='0' WHERE at_achievement='".$res[$i]['aa_id']."'"); } }*/ /* * translation */ if($_REQUEST['mode'] == "lang" && $_ADMIN->isAdmin()) { $c .= "<h1>Language Editor</h1>"; $user = array(); $user['id'] = 0; $user['lang'] = 'en'; $user['name'] = 'Talvela'; $user['race'] = "matis"; $user['civ'] = "neutral"; $user['cult'] = "neutral"; $_USER = new RyzomUser($user); //menu require_once("include/adm_render_lang.php"); $menu = new AdmMenu($_REQUEST['cat']); $c .= "<center><table> <tr> <td valign='top'><div style='width:230px;font-weight:bold;font-size:14px;'>"; $c .= adm_render_menu($menu); $c .= "</div></td> <td width='645px' valign='top'>"; $open = $menu->getOpenCat(); if($open != 0) { $cat = new AdmCategory($open,'%','%','%'); if($_REQUEST['act'] == "cat_save") { if(is_array($_REQUEST['c_name'])) { foreach($_REQUEST['c_name'] as $key=>$elem) { $cat->setLang($key,$_REQUEST['c_name'][$key]); } } } if($_REQUEST['act'] == "ach_save") { $ach = $cat->getElementByPath($_REQUEST['id']); if(is_array($_REQUEST['a_name'])) { foreach($_REQUEST['a_name'] as $key=>$elem) { $ach->setLang($key,$_REQUEST['a_name'][$key],$_REQUEST['a_tpl'][$key]); } } } if($_REQUEST['act'] == "task_save") { $task = $cat->getElementByPath($_REQUEST['id']); if(is_array($_REQUEST['t_name'])) { foreach($_REQUEST['t_name'] as $key=>$elem) { $task->setLang($key,$_REQUEST['t_name'][$key],$_REQUEST['t_tpl'][$key]); } } } if($_REQUEST['act'] == "obj_save") { $obj = $cat->getElementByPath($_REQUEST['id']); if(is_array($_REQUEST['o_name'])) { foreach($_REQUEST['o_name'] as $key=>$elem) { $obj->setLang($key,$_REQUEST['o_name'][$key]); } } } $c .= atom_render_category($cat); } $c .= "</td> </tr> </table></center>"; } /* * Trigger settings */ if($_REQUEST['mode'] == "atom" && $_ADMIN->isAdmin()) { $c .= "<h1>Trigger Settings</h1>"; $user = array(); $user['id'] = 0; $user['lang'] = 'en'; $user['name'] = 'Talvela'; $user['race'] = "matis"; $user['civ'] = "neutral"; $user['cult'] = "neutral"; $_USER = new RyzomUser($user); //menu require_once("include/adm_render_atom.php"); $menu = new AdmMenu($_REQUEST['cat']); $c .= "<center><table> <tr> <td valign='top'><div style='width:230px;font-weight:bold;font-size:14px;'>"; $c .= adm_render_menu($menu); $c .= "</div></td> <td width='645px' valign='top'>"; $open = $menu->getOpenCat(); if($open != 0) { $cat = new AdmCategory($open,'%','%','%'); if($_REQUEST['act'] == "insert_atom") { $obj = $cat->getElementByPath($_REQUEST['id']); if($obj != null) { $atom = new AdmAtom(array(),$obj); $atom->setRuleset($_REQUEST['atom_ruleset']); $atom->setMandatory($_REQUEST['atom_mandatory']); $atom->setObjective($obj->getID()); $obj->insertNode($atom); } } if($_REQUEST['act'] == "update_atom") { $atom = $cat->getElementByPath($_REQUEST['id']); if($atom != null) { $atom->setRuleset($_REQUEST['atom_ruleset']); $atom->setMandatory($_REQUEST['atom_mandatory']); $atom->update(); } } if($_REQUEST['act'] == "delete") { $elem = $cat->getElementByPath($_REQUEST['id']); $par = $elem->getParent(); $par->removeNode($elem->getID()); } $c .= atom_render_category($cat); } $c .= "</td> </tr> </table></center>"; } /* * Menu settings */ if($_REQUEST['mode'] == "menu" && $_ADMIN->isAdmin()) { $c .= "<h1>Menu Settings</h1>"; $user = array(); $user['id'] = 1; $user['lang'] = 'en'; $user['name'] = 'Talvela'; $user['race'] = "matis"; $user['civ'] = "neutral"; $user['cult'] = "neutral"; $_USER = new RyzomUser($user); require_once("include/adm_render_menu.php"); $menu = new AdmMenu(false); if($_REQUEST['act'] == "insert") { $n = new AdmMenuNode(array(),null); $n->setID(null); $n->setInDev(true); $n->setName($_REQUEST['acl_name']); $n->setImage($_REQUEST['ac_image']); $n->setParentID($_REQUEST['ac_parent']); $menu->insertNode($n); } if($_REQUEST['act'] == "delete") { $menu->removeNode($_REQUEST['ac_id']); } if($_REQUEST['act'] == "update") { $menu->updateNode($_REQUEST['ac_id'],array("acl_name"=>$_REQUEST['acl_name'],"ac_image"=>$_REQUEST['ac_image'])); } if($_REQUEST['act'] == "dev") { $curr = $menu->getNode($_REQUEST['ac_id']); $curr->setInDev(($_REQUEST['state'] != 1)); } $c .= adm_render_menu($menu); } /* * Achievement settings */ if($_REQUEST['mode'] == "ach" && $_ADMIN->isAdmin()) { $c .= "<h1>Achievement Settings</h1>"; $user = array(); $user['id'] = 0; $user['lang'] = 'en'; $user['name'] = 'Talvela'; $user['race'] = "matis"; $user['civ'] = "neutral"; $user['cult'] = "neutral"; $_USER = new RyzomUser($user); //menu require_once("include/adm_render_ach.php"); $menu = new AdmMenu($_REQUEST['cat']); $c .= "<center><table> <tr> <td valign='top'><div style='width:230px;font-weight:bold;font-size:14px;'>"; $c .= adm_render_menu($menu); $c .= "</div></td> <td width='645px' valign='top'>"; $open = $menu->getOpenCat(); if($open != 0) { if($_REQUEST['cult']) { $cult = $_REQUEST['cult']; $_SESSION['cult'] = $cult; } elseif($_SESSION['cult']) { $cult = $_SESSION['cult']; } else { $cult = $_USER->getCult(); } if($_REQUEST['civ']) { $civ = $_REQUEST['civ']; $_SESSION['civ'] = $civ; } elseif($_SESSION['civ']) { $civ = $_SESSION['civ']; } else { $civ = $_USER->getCiv(); } echo $civ.$cult; $cat = new AdmCategory($open,$_USER->getRace(),$cult,$civ); $microstop = explode(' ',microtime()); $stop_time = $microstop[0] + $microstop[1]; echo "<br>loading: ".round($stop_time - $start_time,3); $start_time = $stop_time; if($_REQUEST['act'] == "ach_move") { $ach = $cat->getChildDataByID($_REQUEST['id']); if($ach != null) { $ach->setCategory($_REQUEST['new_cat']); $ach->update(); $cat->removeChild($ach->getID()); $iter = $cat->getOpen(); while($iter->hasNext()) { $item = $iter->getNext(); if($ach->getID() == $item->getParentID()) { $item->setCategory($_REQUEST['new_cat']); $item->update(); $cat->removeChild($item->getID()); } } } } if($_REQUEST['act'] == "ach_insert") { $ach = new AdmAchievement(array(),$cat); $ach->setCategory($cat->getID()); $ach->setName($_REQUEST['aal_name']); $ach->setTemplate($_REQUEST['aal_template']); $ach->setImage($_REQUEST['aa_image']); $ach->setParentID($_REQUEST['aa_parent']); $ach->setSticky($_REQUEST['aa_sticky']); $cat->insertNode($ach); $task = new AdmTask(array(),$ach); $task->setAchievement($ach->getID()); $task->setName($_REQUEST['atl_name']); $task->setTemplate($_REQUEST['atl_template']); $task->setValue($_REQUEST['at_value']); $task->setCondition($_REQUEST['at_condition']); $task->setConditionValue($_REQUEST['at_condition_value']); $task->setHeritage(0); if(is_array($_REQUEST['at_tie_allegiance'])) { $task->setTieAlign($_REQUEST['at_tie_allegiance']); } $ach->insertNode($task); } if($_REQUEST['act'] == "ach_update") { $ach = $cat->getChildDataByID($_REQUEST['id']); if($ach != null) { $ach->setName($_REQUEST['aal_name']); $ach->setTemplate($_REQUEST['aal_template']); #$ach->setTieCult($_REQUEST['aa_tie_cult']); #$ach->setTieCiv($_REQUEST['aa_tie_civ']); $ach->setImage($_REQUEST['aa_image']); $ach->setParentID($_REQUEST['aa_parent']); $ach->setSticky($_REQUEST['aa_sticky']); $ach->update(); } } if($_REQUEST['act'] == "task_insert") { $ach = $cat->getChildDataByID($_REQUEST['id']); if($ach != null) { $task = new AdmTask(array(),$ach); $task->setAchievement($ach->getID()); $task->setName($_REQUEST['atl_name']); $task->setTemplate($_REQUEST['atl_template']); $task->setValue($_REQUEST['at_value']); $task->setCondition($_REQUEST['at_condition']); $task->setConditionValue($_REQUEST['at_condition_value']); $task->setHeritage($_REQUEST['at_inherit']); if(is_array($_REQUEST['at_tie_allegiance'])) { $task->setTieAlign($_REQUEST['at_tie_allegiance']); } $ach->insertNode($task); $task->setParentID($_REQUEST['at_parent']); $ach->orderTasks(); $task->update(); } } if($_REQUEST['act'] == "task_update") { $task = $cat->getElementByPath($_REQUEST['id']); if($task != null) { $task->setName($_REQUEST['atl_name']); $task->setTemplate($_REQUEST['atl_template']); $task->setValue($_REQUEST['at_value']); $task->setCondition($_REQUEST['at_condition']); $task->setConditionValue($_REQUEST['at_condition_value']); $task->setHeritage($_REQUEST['at_inherit']); if(is_array($_REQUEST['at_tie_allegiance'])) { $task->setTieAlign($_REQUEST['at_tie_allegiance']); } $task->setParentID($_REQUEST['at_parent']); $ach = $task->getParent(); $ach->orderTasks(); $task->update(); } } if($_REQUEST['act'] == "obj_insert") { $task = $cat->getElementByPath($_REQUEST['id']); if($task != null) { $obj = new AdmObjective(array(),$task); $obj->setName($_REQUEST['aol_name']); $obj->setCondition($_REQUEST['ao_condition']); $obj->setValue($_REQUEST['ao_value']); $obj->setDisplay($_REQUEST['ao_display']); $obj->setMetalink($_REQUEST['ao_metalink']); $obj->setTask($task->getID()); $task->insertNode($obj); } } if($_REQUEST['act'] == "obj_update") { $obj = $cat->getElementByPath($_REQUEST['id']); if($obj != null) { $obj->setName($_REQUEST['aol_name']); $obj->setCondition($_REQUEST['ao_condition']); $obj->setValue($_REQUEST['ao_value']); $obj->setDisplay($_REQUEST['ao_display']); $obj->setMetalink($_REQUEST['ao_metalink']); $obj->update(); } } if($_REQUEST['act'] == "delete") { $elem = $cat->getElementByPath($_REQUEST['id']); if($elem != null) { $par = $elem->getParent(); $par->removeNode($elem->getID()); if(get_class($elem) == "AdmAchievement") { $iter = $cat->getOpen(); while($iter->hasNext()) { $item = $iter->getNext(); if($elem->getID() == $item->getParentID()) { $item->setParentID(null); $item->update(); } } } } } if($_REQUEST['act'] == "dev") { $curr = $cat->getElementByPath($_REQUEST['id']); $curr->setInDev(($_REQUEST['state'] != 1)); } $microstop = explode(' ',microtime()); $stop_time = $microstop[0] + $microstop[1]; echo "<br>manipulation: ".round($stop_time - $start_time,3); $start_time = $stop_time; $c .= adm_render_category($cat); $microstop = explode(' ',microtime()); $stop_time = $microstop[0] + $microstop[1]; echo "<br>rendering: ".round($stop_time - $start_time,3); } $c .= "</td> </tr> </table></center>"; } /* * Statistics page */ if($_REQUEST['mode'] == "stats" && $_ADMIN->isCSR()) { require_once("include/adm_render_stats.php"); $c .= "<h1>Statistics</h1>"; $c .= stats_render(); } /* * CSR player manager */ if($_REQUEST['mode'] == "player" && $_ADMIN->isCSR()) { $c .= "<h1>Player Administration</h1>"; #$DBc_char = new mySQL($_CONF['mysql_error']); #$DBc_char->connect($_CONF['char_mysql_server'],$_CONF['char_mysql_user'],$_CONF['char_mysql_pass'],$_CONF['char_mysql_database']); $DBc_char = ryDB::getInstance("webig"); //menu require_once("include/adm_render_csr.php"); if(!is_user($_REQUEST['pid'])) { // no user ID $c .= csr_render_find_player(); } else { $user = array(); $user['id'] = $_REQUEST['pid']; $user['lang'] = 'en'; $dta = user_get_data($_REQUEST['pid']); $user['char_name'] = user_get_name($_REQUEST['pid']); $user['race'] = substr($dta['race'],2); $user['civ'] = substr($dta['civilisation'],2); $user['cult'] = substr($dta['cult'],2); $_USER = new RyzomUser($user); $menu = new AchMenu($_REQUEST['cat']); $open = $menu->getOpenCat(); if($open != 0) { if($_REQUEST['cult']) { $cult = $_REQUEST['cult']; $_SESSION['cult'] = $cult; } elseif($_SESSION['cult']) { $cult = $_SESSION['cult']; } else { $cult = $_USER->getCult(); } if($_REQUEST['civ']) { $civ = $_REQUEST['civ']; $_SESSION['civ'] = $civ; } elseif($_SESSION['civ']) { $civ = $_SESSION['civ']; } else { $civ = $_USER->getCiv(); } $cat = new CSRCategory($open,$_USER->getRace(),$cult,$civ); if($_REQUEST['grant'] != "") { $cat->grantNode($_REQUEST['grant'],$_USER->getID()); } if($_REQUEST['deny'] != "") { $cat->denyNode($_REQUEST['deny'],$_USER->getID()); } } $c .= "<center><table> <tr> <td colspan='2' align='left'>".csr_render_yubopoints($user['id'])."</td> </tr> <tr> <td valign='top'><div style='width:230px;font-weight:bold;font-size:14px;'>"; $c .= csr_render_menu($menu); $c .= "</div></td> <td width='645px' valign='top'>"; if($open != 0) { $c .= csr_render_category($cat); } else { $cat = new AchSummary($menu,3); $c .= ach_render_summary_header(); } if($open == 0) { $c .= ach_render_summary_footer($cat); } $c .= "</td> </tr> </table></center>"; } } $c .= "</td> </tr> </table></center>"; #$c = var_export($_USER).$c; echo ryzom_app_render("achievements admin", $c, $_ADMIN->isIG()); ?>