File: 0.00.0a/api.php (View as Code)

1: 2: /* ------------------------------------------------------------- 3: This file is part of FreeDESK 4: 5: FreeDESK is (C) Copyright 2012 David Cutting 6: 7: FreeDESK is free software: you can redistribute it and/or modify 8: it under the terms of the GNU General Public License as published by 9: the Free Software Foundation, either version 3 of the License, or 10: (at your option) any later version. 11: 12: FreeDESK is distributed in the hope that it will be useful, 13: but WITHOUT ANY WARRANTY; without even the implied warranty of 14: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15: GNU General Public License for more details. 16: 17: You should have received a copy of the GNU General Public License 18: along with FreeDESK. If not, see www.gnu.org/licenses 19: 20: For more information see www.purplepixie.org/freedesk/ 21: -------------------------------------------------------------- */ 22: 23: ob_start(); 24: include("core/FreeDESK.php"); 25: $DESK = new FreeDESK("./"); 26: $DESK->Start(); 27: ob_end_clean(); 28: 29: header("Content-type: text/xml"); 30: header("Expires: Tue, 27 Jul 1997 01:00:00 GMT"); 31: header("Cache-Control: no-store, no-cache, must-revalidate"); 32: header("Cache-Control: post-check=0, pre-check=0", false); 33: header("Pragma: no-cache"); 34: 35: if (!isset($_REQUEST['mode'])) 36: { 37: $error = new FreeDESK_Error(ErrorCode::UnknownMode, "Unknown Mode"); 38: echo $error->XML(true); 39: exit(); 40: } 41: 42: if ($_REQUEST['mode']=="login") 43: { 44: //echo $_REQUEST['username'].$_REQUEST['password']; 45: // TODO: Other Login Modes 46: if ($DESK->ContextManager->Open(ContextType::User, "", $_REQUEST['username'], $_REQUEST['password'])) 47: { 48: echo $DESK->ContextManager->Session->XML(true); 49: exit(); 50: } 51: else // Login failed 52: { 53: $error = new FreeDESK_Error(ErrorCode::FailedLogin, "Login Failed"); 54: echo $error->XML(true); 55: exit(); 56: } 57: } 58: else if ($_REQUEST['mode']=="logout") 59: { 60: if ($DESK->ContextManager->Open(ContextType::User, $_REQUEST['sid'])) 61: $DESK->ContextManager->Destroy(); 62: $xml = new xmlCreate(); 63: $xml->charElement("logout","1"); 64: echo $xml->getXML(true); 65: exit(); 66: } 67: 68: if (!$DESK->ContextManager->Open(ContextType::User, $_REQUEST['sid'])) 69: { 70: $error = new FreeDESK_Error(ErrorCode::SessionExpired, "Session Expired"); 71: echo $error->XML(true); 72: exit(); 73: } 74: 75: if ($_REQUEST['mode']=="requests_assigned") 76: { 77: $team = isset($_REQUEST['teamid']) ? $_REQUEST['teamid'] : 0; 78: $user = isset($_REQUEST['username']) ? $_REQUEST['username'] : ""; 79: $sort = isset($_REQUEST['sort']) ? $_REQUEST['sort'] : ""; 80: $order = isset($_REQUEST['order']) && $_REQUEST['order']=="D" ? "DESC" : "ASC"; 81: $list = $DESK->RequestManager->FetchAssigned($team, $user, $sort, $order); 82: echo xmlCreate::getHeader()."\n"; 83: echo "\n"; 84: foreach($list as $item) 85: { 86: echo $item->XML(false)."\n"; 87: } 88: echo "\n"; 89: exit(); 90: } 91: 92: if ($_REQUEST['mode']=="entity_search") 93: { 94: $entity = $DESK->DataDictionary->GetTable($_REQUEST['entity']); 95: 96: if ($entity === false || !$entity->editable) 97: { 98: // 99: } 100: 101: if (!$DESK->ContextManager->Permission("entity_view.".$_REQUEST['entity'])) 102: { 103: // 104: } 105: 106: // ENTITY MANAGER 107: $q="SELECT * FROM ".$DESK->Database->Table($entity->entity); 108: 109: 110: $qb = new QueryBuilder(); 111: $fieldcount = 0; 112: foreach($entity->fields as $key => $field) 113: { 114: if ($field->searchable && isset($_REQUEST[$key]) && ($_REQUEST[$key]!="")) 115: { 116: if ($fieldcount++ > 0) 117: $qb->AddOperation(QueryType::opAND); 118: 119: if ( ($field->type==DD_FieldType::Char || $field->type==DD_FieldType::Text) && 120: strpos($_REQUEST[$key], "%") !== true ) 121: $qb->Add($key, QueryType::Like, $DESK->Database->SafeQuote($_REQUEST[$key])); 122: else 123: $qb->Add($key, QueryType::Equal, $DESK->Database->SafeQuote($_REQUEST[$key])); 124: } 125: } 126: 127: 128: 129: if (isset($_REQUEST['start'])) 130: $start=$_REQUEST['start']; 131: else 132: $start = 0; 133: 134: if (isset($_REQUEST['limit'])) 135: $limit=$_REQUEST['limit']; 136: else 137: $limit = 30; 138: 139: 140: $wc = $DESK->Database->Clause($qb); 141: 142: if ($wc != "") 143: $q.=" WHERE ".$wc; 144: 145: $meta = array( 146: "start" => $start, 147: "limit" => $limit ); 148: 149: $r=$DESK->Database->Query($q); 150: 151: $meta["count"]=$DESK->Database->NumRows($r); 152: 153: if ($meta["count"]>$limit) 154: { 155: $q.=" LIMIT ".$DESK->Database->Safe($start).",".$DESK->Database->Safe($limit); 156: $DESK->Database->Free($r); 157: $r=$DESK->Database->Query($q); 158: } 159: 160: $xml = new xmlCreate(); 161: $xml->startElement("search-results"); 162: $xml->startElement("meta"); 163: foreach($meta as $key => $val) 164: $xml->charElement($key, $val); 165: $keyfield=""; 166: foreach($entity->fields as $key => $field) 167: { 168: if ($field->keyfield) 169: $keyfield=$field->field; 170: $xml->startElement("field-data"); 171: $xml->charElement("id",$field->field); 172: $xml->charElement("name",$field->name, 0, false, true); 173: $xml->endElement("field-data"); 174: } 175: $xml->charElement("keyfield",$keyfield); 176: $xml->endElement("meta"); 177: 178: while($row=$DESK->Database->FetchAssoc($r)) 179: { 180: $xml->startElement("entity"); 181: foreach($row as $key => $val) 182: { 183: $xml->charElement("field", $val, array("id"=>$key), false, true); 184: } 185: $xml->endElement("entity"); 186: } 187: $DESK->Database->Free($r); 188: 189: $xml->endElement("search-results"); 190: 191: echo $xml->getXML(true); 192: exit(); 193: } 194: 195: else if ($_REQUEST['mode'] == "entity_save") 196: { 197: $entity = $_REQUEST['entity']; 198: $table = $DESK->DataDictionary->GetTable($entity); 199: 200: if ($entity === false) 201: { 202: $err = new FreeDESK_Error(ErrorCode::EntityError, "Entity Error (Not Found)"); 203: echo $err->XML(true); 204: exit(); 205: } 206: 207: $keyfield = $table->keyfield; 208: 209: $data = $DESK->EntityManager->Load($entity, $_REQUEST[$keyfield]); 210: 211: 212: if ($data === false) 213: { 214: $err = new FreeDESK_Error(ErrorCode::EntityError, "Entity Error (Not Loaded)"); 215: echo $err->XML(true); 216: exit(); 217: } 218: 219: foreach($table->fields as $id => $field) 220: { 221: if ($id != $keyfield) 222: if (isset($_REQUEST[$id])) 223: $data->Set($id, $_REQUEST[$id]); 224: } 225: 226: $result = $DESK->EntityManager->Save($data); 227: 228: if ($result) 229: { 230: $xml = new xmlCreate(); 231: $xml->charElement("operation","1"); 232: echo $xml->getXML(true); 233: exit(); 234: } 235: else 236: { 237: $err = new FreeDESK_Error(ErrorCode::EntityError, "Entity Error (Not Saved)"); 238: echo $err->XML(true); 239: exit(); 240: } 241: } 242: 243: else if ($_REQUEST['mode'] == "entity_create") 244: { 245: $entity = $_REQUEST['entity']; 246: $table = $DESK->DataDictionary->GetTable($entity); 247: 248: if ($entity === false) 249: { 250: $err = new FreeDESK_Error(ErrorCode::EntityError, "Entity Error (Not Found)"); 251: echo $err->XML(true); 252: exit(); 253: } 254: 255: $data = $DESK->EntityManager->Create($entity); 256: 257: foreach($table->fields as $id => $field) 258: { 259: if ($id != $keyfield) 260: if (isset($_REQUEST[$id])) 261: $data->Set($id, $_REQUEST[$id]); 262: } 263: 264: $result = $DESK->EntityManager->Insert($data); 265: 266: if ($result) 267: { 268: $xml = new xmlCreate(); 269: $xml->charElement("operation","1"); 270: echo $xml->getXML(true); 271: exit(); 272: } 273: else 274: { 275: $err = new FreeDESK_Error(ErrorCode::EntityError, "Entity Error (Not Saved)"); 276: echo $err->XML(true); 277: exit(); 278: } 279: } 280: 281: else if ($_REQUEST['mode'] == "user_edit") 282: { 283: if (!$DESK->ContextManager->Permission("user_admin")) 284: { 285: $error = new FreeDESK_Error(ErrorCode::Forbidden, "Permission Denied"); 286: echo $error->XML(true); 287: exit(); 288: } 289: 290: $q = "UPDATE ".$DESK->Database->Table("user")." SET "; 291: 292: $q.=$DESK->Database->Field("username")."=".$DESK->Database->SafeQuote($_REQUEST['username']).","; 293: $q.=$DESK->Database->Field("realname")."=".$DESK->Database->SafeQuote($_REQUEST['realname']).","; 294: $q.=$DESK->Database->Field("email")."=".$DESK->Database->SafeQuote($_REQUEST['email']).","; 295: $q.=$DESK->Database->Field("permgroup")."=".$DESK->Database->SafeQuote($_REQUEST['permgroup']); 296: 297: $q.=" WHERE ".$DESK->Database->Field("username")."=".$DESK->Database->SafeQuote($_REQUEST['original_username']); 298: 299: $DESK->Database->Query($q); 300: 301: if (isset($_REQUEST['password']) && $_REQUEST['password']!="") 302: { 303: $amb = new AuthMethodStandard($DESK); 304: $amb->SetPassword($_REQUEST['username'], $_REQUEST['password']); 305: } 306: 307: $q="DELETE FROM ".$DESK->Database->Table("teamuserlink")." WHERE ".$DESK->Database->Field("username")."=" 308: .$DESK->Database->SafeQuote($_REQUEST['original_username']); 309: $DESK->Database->Query($q); 310: 311: if (isset($_REQUEST['team'])) 312: { 313: foreach($_REQUEST['team'] as $team) 314: { 315: $q="INSERT INTO ".$DESK->Database->Table("teamuserlink")."(".$DESK->Database->Field("username")."," 316: .$DESK->Database->Field("teamid").") VALUES(".$DESK->Database->SafeQuote($_REQUEST['username'])."," 317: .$DESK->Database->Safe($team).")"; 318: $DESK->Database->Query($q); 319: } 320: } 321: 322: $xml = new xmlCreate(); 323: $xml->charElement("operation","1"); 324: echo $xml->getXML(true); 325: exit(); 326: } 327: 328: else if ($_REQUEST['mode'] == "request_update") 329: { 330: // TODO: PERMISSIONS + PUBLIC 331: 332: $public=false; 333: if (isset($_REQUEST['public']) && $_REQUEST['public']==1) 334: $public=true; 335: 336: $req = $DESK->RequestManager->Fetch($_REQUEST['requestid']); 337: if ($req === false) 338: { 339: $error = new FreeDESK_Error(ErrorCode::UnknownRequest, "Unknown Request"); 340: echo $error->XML(true); 341: exit(); 342: } 343: 344: if (isset($_REQUEST['update']) && $_REQUEST['update']!="") 345: $req->Update($_REQUEST['update'], $public); 346: 347: if (isset($_REQUEST['status']) && $_REQUEST['status']!="" && $_REQUEST['status']!=" " && is_numeric($_REQUEST['status'])) 348: $req->Status($_REQUEST['status'], $public); 349: 350: // TODO: ASSIGNMENT PERMISSION 351: if (isset($_REQUEST['assign']) && $_REQUEST['assign'] != "" && $_REQUEST['assign'] != " ") // Composite assignment 352: { 353: $team = 0; 354: $user = ""; 355: 356: $assign = $_REQUEST['assign']; 357: 358: if (is_numeric($assign)) // just a team 359: $team = $assign; 360: else 361: { 362: $parts = explode("/",$assign); 363: $team = $parts[0]; 364: if (isset($parts[1])) 365: $user=$parts[1]; 366: } 367: 368: $req->Assign($team, $user, $public); 369: } 370: 371: 372: $xml = new xmlCreate(); 373: $xml->charElement("operation","1"); 374: echo $xml->getXML(true); 375: exit(); 376: } 377: 378: else if ($_REQUEST['mode'] == 'request_create') 379: { 380: if (isset($_REQUEST['class'])) 381: $class = $_REQUEST['class']; 382: else 383: $class = ""; 384: 385: // Request of required class 386: $req = $DESK->RequestManager->CreateById($class); 387: 388: // Assignment of request: TODO permissions for this! 389: $team=0; 390: $user=""; 391: 392: if (isset($_REQUEST['assign'])) 393: { 394: if (is_numeric($assign)) // just a team 395: $team = $assign; 396: else 397: { 398: $parts = explode("/",$assign); 399: $team = $parts[0]; 400: if (isset($parts[1])) 401: $user=$parts[1]; 402: } 403: } 404: 405: $id = $req->Create($_REQUEST['customer'], $_REQUEST['update'], $class, $_REQUEST['status'], 406: $team, $user); 407: 408: $xml = new xmlCreate(); 409: $xml->charElement("request", $id); 410: echo $xml->getXML(true); 411: exit(); 412: } 413: 414: else if ($_REQUEST['mode'] == 'permission_save') 415: { 416: if (!$DESK->ContextManager->Permission("user_admin")) 417: { 418: $error = new FreeDESK_Error(ErrorCode::Forbidden, "Permission Denied"); 419: echo $error->XML(true); 420: exit(); 421: } 422: 423: if ($_REQUEST['type'] == "user") 424: { 425: $type="user"; 426: $usergroupid=$_REQUEST['username']; 427: } 428: else if ($_REQUEST['type'] == "group") 429: { 430: $type="group"; 431: $usergroupid=$_REQUEST['groupid']; 432: } 433: else 434: { 435: $error = new FreeDESK_Error(ErrorCode::UnknownMode, "Unknown Mode ".$_REQUEST['mode']); 436: echo $error->XML(true); 437: exit(); 438: } 439: 440: $q="DELETE FROM ".$DESK->Database->Table("permissions")." WHERE "; 441: $q.=$DESK->Database->Field("permissiontype")."=".$DESK->Database->SafeQuote($type)." AND "; 442: $q.=$DESK->Database->Field("usergroupid")."=".$DESK->Database->SafeQuote($usergroupid); 443: 444: $DESK->Database->Query($q); 445: 446: $perms = $DESK->PermissionManager->PermissionList(); 447: 448: foreach($perms as $perm => $def) 449: { 450: $htmlperm = str_replace(".","#",$perm); 451: if (isset($_REQUEST[$htmlperm])) 452: { 453: $DESK->LoggingEngine->Log($perm,$_REQUEST[$htmlperm],"hi"); 454: $val=-1; 455: if ($_REQUEST[$htmlperm] == "1") 456: $val=1; 457: else if ($_REQUEST[$htmlperm] == "0") 458: $val=0; 459: 460: if ($val==1 || $val==0) 461: { 462: $q="INSERT INTO ".$DESK->Database->Table("permissions")."("; 463: $q.=$DESK->Database->Field("permissiontype").",".$DESK->Database->Field("permission").","; 464: $q.=$DESK->Database->Field("usergroupid").",".$DESK->Database->Field("allowed").") VALUES("; 465: $q.=$DESK->Database->SafeQuote($type).",".$DESK->Database->SafeQuote($perm).","; 466: $q.=$DESK->Database->SafeQuote($usergroupid).",".$DESK->Database->Safe($val).")"; 467: 468: $DESK->Database->Query($q); 469: } 470: } 471: } 472: 473: 474: $xml = new xmlCreate(); 475: $xml->charElement("operation","1"); 476: echo $xml->getXML(true); 477: exit(); 478: } 479: 480: else if ($_REQUEST['mode'] == "create_user") 481: { 482: if (!$DESK->ContextManager->Permission("user_admin")) 483: { 484: $error = new FreeDESK_Error(ErrorCode::Forbidden, "Permission Denied"); 485: echo $error->XML(true); 486: exit(); 487: } 488: 489: if ($_REQUEST['username'] != "") 490: { 491: $q="INSERT INTO ".$DESK->Database->Table("user")."(".$DESK->Database->Field("username").") VALUES("; 492: $q.=$DESK->Database->SafeQuote($_REQUEST['username']).")"; 493: $DESK->Database->Query($q); 494: } 495: $xml = new xmlCreate(); 496: $xml->charElement("operation","1"); 497: echo $xml->getXML(true); 498: exit(); 499: } 500: 501: else if ($_REQUEST['mode'] == "delete_user") 502: { 503: // TODO: Delete related data e.g. perms, links and reassign requests 504: if (!$DESK->ContextManager->Permission("user_admin")) 505: { 506: $error = new FreeDESK_Error(ErrorCode::Forbidden, "Permission Denied"); 507: echo $error->XML(true); 508: exit(); 509: } 510: 511: if ($_REQUEST['username'] != "") 512: { 513: $q="DELETE FROM ".$DESK->Database->Table("user")." WHERE "; 514: $q.=$DESK->Database->Field("username")."=".$DESK->Database->SafeQuote($_REQUEST['username']); 515: $DESK->Database->Query($q); 516: } 517: $xml = new xmlCreate(); 518: $xml->charElement("operation","1"); 519: echo $xml->getXML(true); 520: exit(); 521: } 522: 523: else if ($_REQUEST['mode'] == "permgroup_delete") 524: { 525: $id=$_REQUEST['permgroupid']; 526: if (!$DESK->ContextManager->Permission("user_admin")) 527: { 528: $error = new FreeDESK_Error(ErrorCode::Forbidden, "Permission Denied"); 529: echo $error->XML(true); 530: exit(); 531: } 532: 533: $DESK->PermissionManager->DeleteGroup($id); 534: 535: $xml = new xmlCreate(); 536: $xml->charElement("operation","1"); 537: echo $xml->getXML(true); 538: exit(); 539: } 540: 541: else if ($_REQUEST['mode'] == "permgroup_create") 542: { 543: $name=$_REQUEST['groupname']; 544: if (!$DESK->ContextManager->Permission("user_admin")) 545: { 546: $error = new FreeDESK_Error(ErrorCode::Forbidden, "Permission Denied"); 547: echo $error->XML(true); 548: exit(); 549: } 550: 551: $DESK->PermissionManager->CreateGroup($name); 552: 553: $xml = new xmlCreate(); 554: $xml->charElement("operation","1"); 555: echo $xml->getXML(true); 556: exit(); 557: } 558: 559: else if ($_REQUEST['mode'] == "team_create") 560: { 561: $name=$_REQUEST['teamname']; 562: if (!$DESK->ContextManager->Permission("user_admin")) 563: { 564: $error = new FreeDESK_Error(ErrorCode::Forbidden, "Permission Denied"); 565: echo $error->XML(true); 566: exit(); 567: } 568: 569: $DESK->RequestManager->CreateTeam($name); 570: 571: $xml = new xmlCreate(); 572: $xml->charElement("operation","1"); 573: echo $xml->getXML(true); 574: exit(); 575: } 576: 577: else if ($_REQUEST['mode'] == "team_update") 578: { 579: $name=$_REQUEST['teamname']; 580: $id=$_REQUEST['id']; 581: if (!$DESK->ContextManager->Permission("user_admin")) 582: { 583: $error = new FreeDESK_Error(ErrorCode::Forbidden, "Permission Denied"); 584: echo $error->XML(true); 585: exit(); 586: } 587: 588: $DESK->RequestManager->UpdateTeam($id,$name); 589: 590: $xml = new xmlCreate(); 591: $xml->charElement("operation","1"); 592: echo $xml->getXML(true); 593: exit(); 594: } 595: 596: else if ($_REQUEST['mode'] == "team_delete") 597: { 598: $id=$_REQUEST['id']; 599: if (!$DESK->ContextManager->Permission("user_admin")) 600: { 601: $error = new FreeDESK_Error(ErrorCode::Forbidden, "Permission Denied"); 602: echo $error->XML(true); 603: exit(); 604: } 605: 606: $DESK->RequestManager->DeleteTeam($id); 607: 608: $xml = new xmlCreate(); 609: $xml->charElement("operation","1"); 610: echo $xml->getXML(true); 611: exit(); 612: } 613: 614: else if ($_REQUEST['mode'] == "status_create") 615: { 616: $name=$_REQUEST['name']; 617: if (!$DESK->ContextManager->Permission("user_admin")) 618: { 619: $error = new FreeDESK_Error(ErrorCode::Forbidden, "Permission Denied"); 620: echo $error->XML(true); 621: exit(); 622: } 623: 624: $DESK->RequestManager->CreateStatus($name); 625: 626: $xml = new xmlCreate(); 627: $xml->charElement("operation","1"); 628: echo $xml->getXML(true); 629: exit(); 630: } 631: 632: else if ($_REQUEST['mode'] == "status_delete") 633: { 634: $id=$_REQUEST['id']; 635: if (!$DESK->ContextManager->Permission("user_admin")) 636: { 637: $error = new FreeDESK_Error(ErrorCode::Forbidden, "Permission Denied"); 638: echo $error->XML(true); 639: exit(); 640: } 641: 642: $DESK->RequestManager->DeleteStatus($id); 643: 644: $xml = new xmlCreate(); 645: $xml->charElement("operation","1"); 646: echo $xml->getXML(true); 647: exit(); 648: } 649: 650: else if ($_REQUEST['mode'] == "status_update") 651: { 652: $id=$_REQUEST['id']; 653: $name=$_REQUEST['name']; 654: if (!$DESK->ContextManager->Permission("user_admin")) 655: { 656: $error = new FreeDESK_Error(ErrorCode::Forbidden, "Permission Denied"); 657: echo $error->XML(true); 658: exit(); 659: } 660: 661: $DESK->RequestManager->UpdateStatus($id,$name); 662: 663: $xml = new xmlCreate(); 664: $xml->charElement("operation","1"); 665: echo $xml->getXML(true); 666: exit(); 667: } 668: 669: else if ($_REQUEST['mode'] == "plugin_install") 670: { 671: if (!$DESK->ContextManager->Permission("sysadmin_plugins")) 672: { 673: $error = new FreeDESK_Error(ErrorCode::Forbidden, "Permission Denied"); 674: echo $error->XML(true); 675: exit(); 676: } 677: 678: $plugin=$_REQUEST['plugin']; 679: 680: $DESK->PluginManager->InstallPIM($plugin); 681: 682: $xml = new xmlCreate(); 683: $xml->charElement("operation","1"); 684: echo $xml->getXML(true); 685: exit(); 686: } 687: 688: else if ($_REQUEST['mode'] == "plugin_activate") 689: { 690: if (!$DESK->ContextManager->Permission("sysadmin_plugins")) 691: { 692: $error = new FreeDESK_Error(ErrorCode::Forbidden, "Permission Denied"); 693: echo $error->XML(true); 694: exit(); 695: } 696: 697: $id=$_REQUEST['id']; 698: 699: $DESK->PluginManager->ActivatePIM($id, true); 700: 701: $xml = new xmlCreate(); 702: $xml->charElement("operation","1"); 703: echo $xml->getXML(true); 704: exit(); 705: } 706: 707: else if ($_REQUEST['mode'] == "plugin_deactivate") 708: { 709: if (!$DESK->ContextManager->Permission("sysadmin_plugins")) 710: { 711: $error = new FreeDESK_Error(ErrorCode::Forbidden, "Permission Denied"); 712: echo $error->XML(true); 713: exit(); 714: } 715: 716: $id=$_REQUEST['id']; 717: 718: $DESK->PluginManager->ActivatePIM($id, false); 719: 720: $xml = new xmlCreate(); 721: $xml->charElement("operation","1"); 722: echo $xml->getXML(true); 723: exit(); 724: } 725: 726: else if ($_REQUEST['mode'] == "plugin_uninstall") 727: { 728: if (!$DESK->ContextManager->Permission("sysadmin_plugins")) 729: { 730: $error = new FreeDESK_Error(ErrorCode::Forbidden, "Permission Denied"); 731: echo $error->XML(true); 732: exit(); 733: } 734: 735: $id=$_REQUEST['id']; 736: 737: $DESK->PluginManager->UninstallPIM($id); 738: 739: $xml = new xmlCreate(); 740: $xml->charElement("operation","1"); 741: echo $xml->getXML(true); 742: exit(); 743: } 744: 745: else if ($_REQUEST['mode'] == "sysvar_save") 746: { 747: if (!$DESK->ContextManager->Permission("sysadmin_advanced")) 748: { 749: $error = new FreeDESK_Error(ErrorCode::Forbidden, "Permission Denied"); 750: echo $error->XML(true); 751: exit(); 752: } 753: 754: $id = $_REQUEST['id']; 755: $value = $_REQUEST['value']; 756: 757: $DESK->Configuration->Set($id, $value, true); 758: 759: $xml = new xmlCreate(); 760: $xml->charElement("operation","1"); 761: echo $xml->getXML(true); 762: exit(); 763: } 764: 765: else if ($_REQUEST['mode'] == "sysvar_create") 766: { 767: if (!$DESK->ContextManager->Permission("sysadmin_advanced")) 768: { 769: $error = new FreeDESK_Error(ErrorCode::Forbidden, "Permission Denied"); 770: echo $error->XML(true); 771: exit(); 772: } 773: 774: $id = $_REQUEST['id']; 775: $value = $_REQUEST['value']; 776: 777: $DESK->Configuration->Set($id, $value, true); 778: 779: $xml = new xmlCreate(); 780: $xml->charElement("operation","1"); 781: echo $xml->getXML(true); 782: exit(); 783: } 784: 785: else if ($_REQUEST['mode'] == "sysvar_delete") 786: { 787: if (!$DESK->ContextManager->Permission("sysadmin_advanced")) 788: { 789: $error = new FreeDESK_Error(ErrorCode::Forbidden, "Permission Denied"); 790: echo $error->XML(true); 791: exit(); 792: } 793: 794: $id = $_REQUEST['id']; 795: $value = $_REQUEST['value']; 796: 797: $DESK->Configuration->Delete($id); 798: 799: $xml = new xmlCreate(); 800: $xml->charElement("operation","1"); 801: echo $xml->getXML(true); 802: exit(); 803: } 804: 805: 806: if ($DESK->PluginManager->API($_REQUEST['mode'])) 807: exit(); 808: 809: $error = new FreeDESK_Error(ErrorCode::UnknownMode, "Unknown Mode ".$_REQUEST['mode']); 810: echo $error->XML(true); 811: exit(); 812: 813: ?> 814: