File: 0.01.1a/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: $err = new FreeDESK_Error(ErrorCode::EntityError, "Entity Error"); 99: echo $err->XML(true); 100: exit(); 101: } 102: 103: if (!$DESK->ContextManager->Permission("entity_view.".$_REQUEST['entity'])) 104: { 105: $err = new FreeDESK_error(ErrorCode::PermissionDenied, "Permission Denied to Entity"); 106: echo $err->XML(true); 107: exit(); 108: } 109: 110: // ENTITY MANAGER 111: $q="SELECT * FROM ".$DESK->Database->Table($entity->entity); 112: 113: 114: $qb = new QueryBuilder(); 115: $fieldcount = 0; 116: foreach($entity->fields as $key => $field) 117: { 118: if ($field->searchable && isset($_REQUEST[$key]) && ($_REQUEST[$key]!="")) 119: { 120: if ($fieldcount++ > 0) 121: $qb->AddOperation(QueryType::opAND); 122: 123: if ( ($field->type==DD_FieldType::Char || $field->type==DD_FieldType::Text) && 124: strpos($_REQUEST[$key], "%") !== true ) 125: $qb->Add($key, QueryType::Like, $DESK->Database->SafeQuote($_REQUEST[$key])); 126: else 127: $qb->Add($key, QueryType::Equal, $DESK->Database->SafeQuote($_REQUEST[$key])); 128: } 129: } 130: 131: 132: 133: if (isset($_REQUEST['start'])) 134: $start=$_REQUEST['start']; 135: else 136: $start = 0; 137: 138: if (isset($_REQUEST['limit'])) 139: $limit=$_REQUEST['limit']; 140: else 141: $limit = 30; 142: 143: 144: $wc = $DESK->Database->Clause($qb); 145: 146: if ($wc != "") 147: $q.=" WHERE ".$wc; 148: 149: $meta = array( 150: "start" => $start, 151: "limit" => $limit ); 152: 153: $r=$DESK->Database->Query($q); 154: 155: $meta["count"]=$DESK->Database->NumRows($r); 156: 157: if ($meta["count"]>$limit) 158: { 159: $q.=" LIMIT ".$DESK->Database->Safe($start).",".$DESK->Database->Safe($limit); 160: $DESK->Database->Free($r); 161: $r=$DESK->Database->Query($q); 162: } 163: 164: $xml = new xmlCreate(); 165: $xml->startElement("search-results"); 166: $xml->startElement("meta"); 167: foreach($meta as $key => $val) 168: $xml->charElement($key, $val); 169: $keyfield=""; 170: foreach($entity->fields as $key => $field) 171: { 172: if ($field->keyfield) 173: $keyfield=$field->field; 174: $xml->startElement("field-data"); 175: $xml->charElement("id",$field->field); 176: $xml->charElement("name",$field->name, 0, false, true); 177: $xml->endElement("field-data"); 178: } 179: $xml->charElement("keyfield",$keyfield); 180: $xml->endElement("meta"); 181: 182: while($row=$DESK->Database->FetchAssoc($r)) 183: { 184: $xml->startElement("entity"); 185: foreach($row as $key => $val) 186: { 187: $xml->charElement("field", $val, array("id"=>$key), false, true); 188: } 189: $xml->endElement("entity"); 190: } 191: $DESK->Database->Free($r); 192: 193: $xml->endElement("search-results"); 194: 195: echo $xml->getXML(true); 196: exit(); 197: } 198: 199: else if ($_REQUEST['mode'] == "entity_save") 200: { 201: $entity = $_REQUEST['entity']; 202: $table = $DESK->DataDictionary->GetTable($entity); 203: 204: if ($entity === false) 205: { 206: $err = new FreeDESK_Error(ErrorCode::EntityError, "Entity Error (Not Found)"); 207: echo $err->XML(true); 208: exit(); 209: } 210: 211: $keyfield = $table->keyfield; 212: 213: $data = $DESK->EntityManager->Load($entity, $_REQUEST[$keyfield]); 214: 215: 216: if ($data === false) 217: { 218: $err = new FreeDESK_Error(ErrorCode::EntityError, "Entity Error (Not Loaded)"); 219: echo $err->XML(true); 220: exit(); 221: } 222: 223: foreach($table->fields as $id => $field) 224: { 225: if ($id != $keyfield) 226: if (isset($_REQUEST[$id])) 227: $data->Set($id, $_REQUEST[$id]); 228: } 229: 230: $result = $DESK->EntityManager->Save($data); 231: 232: if ($result) 233: { 234: $xml = new xmlCreate(); 235: $xml->charElement("operation","1"); 236: echo $xml->getXML(true); 237: exit(); 238: } 239: else 240: { 241: $err = new FreeDESK_Error(ErrorCode::EntityError, "Entity Error (Not Saved)"); 242: echo $err->XML(true); 243: exit(); 244: } 245: } 246: 247: else if ($_REQUEST['mode'] == "entity_create") 248: { 249: $entity = $_REQUEST['entity']; 250: $table = $DESK->DataDictionary->GetTable($entity); 251: 252: if ($entity === false) 253: { 254: $err = new FreeDESK_Error(ErrorCode::EntityError, "Entity Error (Not Found)"); 255: echo $err->XML(true); 256: exit(); 257: } 258: 259: $data = $DESK->EntityManager->Create($entity); 260: 261: foreach($table->fields as $id => $field) 262: { 263: if ($id != $keyfield) 264: if (isset($_REQUEST[$id])) 265: $data->Set($id, $_REQUEST[$id]); 266: } 267: 268: $result = $DESK->EntityManager->Insert($data); 269: 270: if ($result) 271: { 272: $xml = new xmlCreate(); 273: $xml->charElement("operation","1"); 274: echo $xml->getXML(true); 275: exit(); 276: } 277: else 278: { 279: $err = new FreeDESK_Error(ErrorCode::EntityError, "Entity Error (Not Saved)"); 280: echo $err->XML(true); 281: exit(); 282: } 283: } 284: 285: else if ($_REQUEST['mode'] == "user_edit") 286: { 287: if (!$DESK->ContextManager->Permission("user_admin")) 288: { 289: $error = new FreeDESK_Error(ErrorCode::Forbidden, "Permission Denied"); 290: echo $error->XML(true); 291: exit(); 292: } 293: 294: $q = "UPDATE ".$DESK->Database->Table("user")." SET "; 295: 296: $q.=$DESK->Database->Field("username")."=".$DESK->Database->SafeQuote($_REQUEST['username']).","; 297: $q.=$DESK->Database->Field("realname")."=".$DESK->Database->SafeQuote($_REQUEST['realname']).","; 298: $q.=$DESK->Database->Field("email")."=".$DESK->Database->SafeQuote($_REQUEST['email']).","; 299: $q.=$DESK->Database->Field("permgroup")."=".$DESK->Database->SafeQuote($_REQUEST['permgroup']); 300: 301: $q.=" WHERE ".$DESK->Database->Field("username")."=".$DESK->Database->SafeQuote($_REQUEST['original_username']); 302: 303: $DESK->Database->Query($q); 304: 305: if (isset($_REQUEST['password']) && $_REQUEST['password']!="") 306: { 307: $amb = new AuthMethodStandard($DESK); 308: $amb->SetPassword($_REQUEST['username'], $_REQUEST['password']); 309: } 310: 311: $q="DELETE FROM ".$DESK->Database->Table("teamuserlink")." WHERE ".$DESK->Database->Field("username")."=" 312: .$DESK->Database->SafeQuote($_REQUEST['original_username']); 313: $DESK->Database->Query($q); 314: 315: if (isset($_REQUEST['team'])) 316: { 317: foreach($_REQUEST['team'] as $team) 318: { 319: $q="INSERT INTO ".$DESK->Database->Table("teamuserlink")."(".$DESK->Database->Field("username")."," 320: .$DESK->Database->Field("teamid").") VALUES(".$DESK->Database->SafeQuote($_REQUEST['username'])."," 321: .$DESK->Database->Safe($team).")"; 322: $DESK->Database->Query($q); 323: } 324: } 325: 326: $xml = new xmlCreate(); 327: $xml->charElement("operation","1"); 328: echo $xml->getXML(true); 329: exit(); 330: } 331: 332: else if ($_REQUEST['mode'] == "request_update") 333: { 334: $public=false; 335: if (isset($_REQUEST['public']) && $_REQUEST['public']==1) 336: $public=true; 337: 338: $req = $DESK->RequestManager->Fetch($_REQUEST['requestid']); 339: if ($req === false) 340: { 341: $error = new FreeDESK_Error(ErrorCode::UnknownRequest, "Unknown Request"); 342: echo $error->XML(true); 343: exit(); 344: } 345: 346: if (isset($_REQUEST['update']) && $_REQUEST['update']!="") 347: $req->Update($_REQUEST['update'], $public); 348: 349: if (isset($_REQUEST['status']) && $_REQUEST['status']!="" && $_REQUEST['status']!=" " && is_numeric($_REQUEST['status'])) 350: $req->Status($_REQUEST['status'], $public); 351: 352: if (isset($_REQUEST['assign']) && $_REQUEST['assign'] != "" && $_REQUEST['assign'] != " ") // Composite assignment 353: { 354: $team = 0; 355: $user = ""; 356: 357: $assign = $_REQUEST['assign']; 358: 359: if (is_numeric($assign)) // just a team 360: $team = $assign; 361: else 362: { 363: $parts = explode("/",$assign); 364: $team = $parts[0]; 365: if (isset($parts[1])) 366: $user=$parts[1]; 367: } 368: 369: $req->Assign($team, $user, $public); 370: } 371: 372: 373: $xml = new xmlCreate(); 374: $xml->charElement("operation","1"); 375: echo $xml->getXML(true); 376: exit(); 377: } 378: 379: else if ($_REQUEST['mode'] == 'request_create') 380: { 381: if (isset($_REQUEST['class'])) 382: $class = $_REQUEST['class']; 383: else 384: $class = ""; 385: 386: // Request of required class 387: $req = $DESK->RequestManager->CreateById($class); 388: 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'], $_REQUEST['priority'], 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: else if ($_REQUEST['mode'] == "reqclass_save") 806: { 807: if (!$DESK->ContextManager->Permission("sysadmin_advanced")) 808: { 809: $error = new FreeDESK_Error(ErrorCode::Forbidden, "Permission Denied"); 810: echo $error->XML(true); 811: exit(); 812: } 813: 814: $id = $_REQUEST['id']; 815: $classname = isset($_REQUEST['classname']) ? $_REQUEST['classname'] : ""; 816: $classclass = isset($_REQUEST['classclass']) ? $_REQUEST['classclass'] : ""; 817: 818: $DESK->RequestManager->SaveRequestClass($classname, $classclass, $id); 819: 820: $xml = new xmlCreate(); 821: $xml->charElement("operation","1"); 822: echo $xml->getXML(true); 823: exit(); 824: } 825: 826: else if ($_REQUEST['mode'] == "reqclass_create") 827: { 828: if (!$DESK->ContextManager->Permission("sysadmin_advanced")) 829: { 830: $error = new FreeDESK_Error(ErrorCode::Forbidden, "Permission Denied"); 831: echo $error->XML(true); 832: exit(); 833: } 834: 835: $classname = isset($_REQUEST['classname']) ? $_REQUEST['classname'] : ""; 836: $classclass = isset($_REQUEST['classclass']) ? $_REQUEST['classclass'] : ""; 837: 838: $DESK->RequestManager->SaveRequestClass($classname, $classclass); 839: 840: $xml = new xmlCreate(); 841: $xml->charElement("operation","1"); 842: echo $xml->getXML(true); 843: exit(); 844: } 845: 846: else if ($_REQUEST['mode'] == "reqclass_delete") 847: { 848: if (!$DESK->ContextManager->Permission("sysadmin_advanced")) 849: { 850: $error = new FreeDESK_Error(ErrorCode::Forbidden, "Permission Denied"); 851: echo $error->XML(true); 852: exit(); 853: } 854: 855: $id = isset($_REQUEST['id']) ? $_REQUEST['id'] : 0; 856: 857: $DESK->RequestManager->DeleteRequestClass($id); 858: 859: $xml = new xmlCreate(); 860: $xml->charElement("operation","1"); 861: echo $xml->getXML(true); 862: exit(); 863: } 864: 865: else if ($_REQUEST['mode'] == "priority_save" || $_REQUEST['mode'] == "priority_create") 866: { 867: if (!$DESK->ContextManager->Permission("sysadmin_advanced")) 868: { 869: $error = new FreeDESK_Error(ErrorCode::Forbidden, "Permission Denied"); 870: echo $error->XML(true); 871: exit(); 872: } 873: 874: // name SLA schedule [id] 875: $id = isset($_REQUEST['id']) ? $_REQUEST['id'] : 0; 876: $name = isset($_REQUEST['name']) ? $_REQUEST['name'] : ""; 877: $sla = isset($_REQUEST['sla']) ? $_REQUEST['sla'] : 0; 878: $schedule = isset($_REQUEST['schedule']) ? $_REQUEST['schedule'] : 0; 879: 880: $DESK->RequestManager->SavePriority($name, $sla, $schedule, $id); 881: 882: $xml = new xmlCreate(); 883: $xml->charElement("operation","1"); 884: echo $xml->getXML(true); 885: exit(); 886: } 887: 888: else if ($_REQUEST['mode'] == "priority_delete") 889: { 890: if (!$DESK->ContextManager->Permission("sysadmin_advanced")) 891: { 892: $error = new FreeDESK_Error(ErrorCode::Forbidden, "Permission Denied"); 893: echo $error->XML(true); 894: exit(); 895: } 896: 897: 898: $id = isset($_REQUEST['id']) ? $_REQUEST['id'] : 0; 899: 900: $DESK->RequestManager->DeletePriority($id); 901: 902: $xml = new xmlCreate(); 903: $xml->charElement("operation","1"); 904: echo $xml->getXML(true); 905: exit(); 906: } 907: 908: else if ($_REQUEST['mode'] == "email_create") 909: { 910: if (!$DESK->ContextManager->Permission("email_accounts")) 911: { 912: $error = new FreeDESK_Error(ErrorCode::Forbidden, "Permission Denied"); 913: echo $error->XML(true); 914: exit(); 915: } 916: 917: 918: $name = isset($_REQUEST['name']) ? $_REQUEST['name'] : ""; 919: 920: $DESK->Email->SaveAccount($name, "", "", "", 50, 0, "", "", ""); 921: 922: $xml = new xmlCreate(); 923: $xml->charElement("operation","1"); 924: echo $xml->getXML(true); 925: exit(); 926: } 927: 928: else if ($_REQUEST['mode'] == "email_delete") 929: { 930: if (!$DESK->ContextManager->Permission("email_accounts")) 931: { 932: $error = new FreeDESK_Error(ErrorCode::Forbidden, "Permission Denied"); 933: echo $error->XML(true); 934: exit(); 935: } 936: 937: 938: $id = isset($_REQUEST['id']) ? $_REQUEST['id'] : 0; 939: 940: $DESK->Email->DeleteAccount($id); 941: 942: $xml = new xmlCreate(); 943: $xml->charElement("operation","1"); 944: echo $xml->getXML(true); 945: exit(); 946: } 947: 948: else if ($_REQUEST['mode'] == "email_save") 949: { 950: if (!$DESK->ContextManager->Permission("email_accounts")) 951: { 952: $error = new FreeDESK_Error(ErrorCode::Forbidden, "Permission Denied"); 953: echo $error->XML(true); 954: exit(); 955: } 956: 957: 958: $id = isset($_REQUEST['id']) ? $_REQUEST['id'] : 0; 959: $name = isset($_REQUEST['name']) ? $_REQUEST['name'] : ""; 960: $host = isset($_REQUEST['host']) ? $_REQUEST['host'] : ""; 961: $from = isset($_REQUEST['from']) ? $_REQUEST['from'] : ""; 962: $fromname = isset($_REQUEST['fromname']) ? $_REQUEST['fromname'] : ""; 963: $wordwrap = isset($_REQUEST['wordwrap']) ? $_REQUEST['wordwrap'] : 0; 964: $auth = isset($_REQUEST['auth']) ? $_REQUEST['auth'] : 0; 965: $username = isset($_REQUEST['username']) ? $_REQUEST['username'] : ""; 966: $password = isset($_REQUEST['password']) ? $_REQUEST['password'] : ""; 967: $smtpsec = isset($_REQUEST['smtpsec']) ? $_REQUEST['smtpsec'] : ""; 968: 969: $DESK->Email->SaveAccount($name, $host, $from, $fromname, $wordwrap, $auth, $username, $password, $smtpsec, $id); 970: 971: $xml = new xmlCreate(); 972: $xml->charElement("operation","1"); 973: echo $xml->getXML(true); 974: exit(); 975: } 976: 977: else if ($_REQUEST['mode'] == "email_test") 978: { 979: if (!$DESK->ContextManager->Permission("email_accounts")) 980: { 981: $error = new FreeDESK_Error(ErrorCode::Forbidden, "Permission Denied"); 982: echo $error->XML(true); 983: exit(); 984: } 985: 986: 987: $id = isset($_REQUEST['id']) ? $_REQUEST['id'] : 0; 988: $to = isset($_REQUEST['to']) ? $_REQUEST['to'] : ""; 989: 990: $res = $DESK->Email->Send($id, $to, "FreeDESK Test", "FreeDESK Test Mail"); 991: 992: if ($res) 993: { 994: $xml = new xmlCreate(); 995: $xml->charElement("operation","1"); 996: echo $xml->getXML(true); 997: exit(); 998: } 999: else 1000: { 1001: $error = new FreeDESK_Error(ErrorCode::OperationFailed, "Operation Failed"); 1002: echo $error->XML(true); 1003: exit(); 1004: } 1005: } 1006: 1007: else if ($_REQUEST['mode'] == "email_send") 1008: { 1009: // Just standard auth required 1010: 1011: 1012: $id = isset($_REQUEST['id']) ? $_REQUEST['id'] : 0; 1013: $to = isset($_REQUEST['to']) ? $_REQUEST['to'] : ""; 1014: $subject = isset($_REQUEST['subject']) ? $_REQUEST['subject'] : ""; 1015: $body = isset($_REQUEST['body']) ? $_REQUEST['body'] : ""; 1016: 1017: $res = $DESK->Email->Send($id, $to, $subject, $body); 1018: 1019: if ($res) 1020: { 1021: $xml = new xmlCreate(); 1022: $xml->charElement("operation","1"); 1023: echo $xml->getXML(true); 1024: exit(); 1025: } 1026: else 1027: { 1028: $error = new FreeDESK_Error(ErrorCode::OperationFailed, "Operation Failed"); 1029: echo $error->XML(true); 1030: exit(); 1031: } 1032: } 1033: 1034: else if ($_REQUEST['mode'] == "template_save") 1035: { 1036: if (!$DESK->ContextManager->Permission("email_templates")) 1037: { 1038: $error = new FreeDESK_Error(ErrorCode::Forbidden, "Permission Denied"); 1039: echo $error->XML(true); 1040: exit(); 1041: } 1042: 1043: 1044: $id = isset($_REQUEST['id']) ? $_REQUEST['id'] : ""; 1045: $subject = isset($_REQUEST['subject']) ? $_REQUEST['subject'] : ""; 1046: $body = isset($_REQUEST['body']) ? $_REQUEST['body'] : ""; 1047: 1048: $DESK->Email->SaveTemplate($id, $subject, $body); 1049: 1050: $xml = new xmlCreate(); 1051: $xml->charElement("operation","1"); 1052: echo $xml->getXML(true); 1053: exit(); 1054: 1055: } 1056: 1057: if ($DESK->PluginManager->API($_REQUEST['mode'])) 1058: exit(); 1059: 1060: $error = new FreeDESK_Error(ErrorCode::UnknownMode, "Unknown Mode ".$_REQUEST['mode']); 1061: echo $error->XML(true); 1062: exit(); 1063: 1064: ?> 1065: