Parent Directory
|
Revision Log
Bug #30: Implement Project Soft Delete https://bugs.castleparadox.com/show_bug.cgi?id=30
<?php
/**
* @package castleparadox
* @subpackage manager
* @version apiManager.php, Apr 8, 2008 12:19:02 AM
* @author inferiorminion
* @copyright Copyright © 2008, Castle Paradox
*/
set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] );
include_once './constants.php';
include_once './manager/databaseManager.php';
include_once './manager/engineManager.php';
include_once './manager/genreManager.php';
include_once './manager/layoutManager.php';
include_once './manager/memberManager.php';
include_once './manager/pollManager.php';
include_once './manager/projectManager.php';
include_once './manager/resourceManager.php';
include_once './manager/trackingManager.php';
include_once './model/project.php';
class APIManager {
public static function handleRequest($request) {
APIManager::startResponse();
switch($request['type']) {
case 'deleteMember':
APIManager::deleteMember($request);
break;
case 'deleteResource':
APIManager::modifyResourceDeleted($request, true);
break;
case 'memberSearch':
APIManager::memberSearch($request['search']);
break;
case 'projectSearch':
APIManager::projectSearch($request);
break;
case 'pollResponse':
APIManager::pollResponse($request);
break;
case 'undoDeleteResource':
APIManager::modifyResourceDeleted($request, false);
break;
}
APIManager::endResponse();
}
private static function startResponse() {
header('Content-Type: text/xml');
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
echo '<response>';
}
private static function endResponse() {
echo '</response>';
exit;
}
private static function memberSearch($search) {
$db = DatabaseManager::getDatabase();
$sql = 'SELECT username, user_id ' .
'FROM ' . USERS_TABLE . ' ' .
'WHERE user_id > 1 AND LOWER(username) LIKE \'%' . $db->sql_escape(strtolower($search)) . '%\'';
if ( !($result = $db->sql_query($sql)) ) {
LayoutManager::fatalMessage('Database Error', 'Could not obtain Game information', __LINE__, __FILE__, $sql);
}
while ( $row = $db->sql_fetchrow($result) ) {
$users[] = $row;
}
$db->sql_freeresult($result);
foreach( $users as $user ) {
echo '<member>';
echo '<memberName>' . $user['username'] . '</memberName>';
echo '<memberId>' . $user['user_id'] . '</memberId>';
echo '</member>';
}
}
private static function projectSearch($request) {
$db = DatabaseManager::getDatabase();
$user = LayoutManager::getUser();
$projectName = '';
if (array_key_exists('projectName', $request) ) {
$projectName = $request['projectName'];
}
$projectDescription = '';
if (array_key_exists('projectDescription', $request) ) {
$projectDescription = $request['projectDescription'];
}
$projectType = '';
if (array_key_exists('projectType', $request) && $request['projectType'] != '') {
$projectType = $request['projectType'];
}
$memberName = '';
if (array_key_exists('memberName', $request) && $request['memberName'] != '' ) {
$memberName = $request['memberName'];
}
$start = 0;
if (array_key_exists('page', $request) && $request['page'] != '') {
$start = $request['page'] * 12;
}
$count = 0;
$projects = ProjectManager::getProjects($projectName, $projectDescription, $projectType, $memberName, $count, $start);
echo '<totalProjects>' . $count . '</totalProjects>';
foreach( $projects as $project ) {
$projectId = $project->getProjectId();
$screenshots = ResourceManager::getProjectResources($projectId, Resource::$GRAPHIC);
$archives = ResourceManager::getProjectResources($projectId, Resource::$ARCHIVE);
$genres = GenreManager::getProjectGenres($projectId);
$engines = EngineManager::getProjectEngines($projectId);
$members = $project->getTeam();
echo '<project>';
echo '<projectName>' . $project->getName() . '</projectName>';
echo '<projectDescription>' . $project->getDescription() . '</projectDescription>';
echo '<projectId>' . $project->getProjectId() . '</projectId>';
echo '<projectSource>' . $project->getSource() . '</projectSource>';
echo '<projectMembers>';
foreach ( $members as $member ) {
echo '<member>';
echo '<memberId>' . $member->getMemberId() . '</memberId>';
echo '<memberUserId>' . $member->getUserID() . '</memberUserId>';
echo '<memberName>' . $member->getUsername() . '</memberName>';
echo '<memberTitle>' . $member->getTitle() . '</memberTitle>';
echo '<memberProfile>' . $member->getProfile() . '</memberProfile>';
echo '</member>';
}
echo '</projectMembers>';
echo '<projectGraphics>';
foreach ( $screenshots as $screenshot ) {
if( !$screenshot->isDeleted() ) {
echo '<graphic>';
echo '<graphicId>' . $screenshot->getGraphicID() . '</graphicId>';
echo '<graphicName>' . $screenshot->getName() . '</graphicName>';
echo '<graphicCaption>' . $screenshot->getCaption() . '</graphicCaption>';
echo '<graphicSource>' . $screenshot->getSource() . '</graphicSource>';
echo '</graphic>';
}
}
echo '</projectGraphics>';
echo '<projectArchives>';
foreach ( $archives as $archive ) {
if( !$archive->isDeleted() ) {
echo '<archive>';
echo '<archiveId>' . $archive->getArchiveID() . '</archiveId>';
echo '<archiveName>' . $archive->getName() . '</archiveName>';
echo '<archiveCaption>' . $archive->getCaption() . '</archiveCaption>';
echo '<archiveSize>' . $archive->getSize() . '</archiveSize>';
echo '<archiveDate>' . $user->format_date($archive->getFileDate()) . '</archiveDate>';
echo '<archiveDatatype>' . $archive->getDatatype() . '</archiveDatatype>';
echo '<archiveSource>' . $archive->getSource() . '</archiveSource>';
echo '<archiveAccessCount>' . TrackingManager::getAccessCount($archive->getResourceID()) . '</archiveAccessCount>';
echo '</archive>';
}
}
echo '</projectArchives>';
echo '<projectGenres>';
foreach ( $genres as $genre ) {
echo '<genre>';
echo '<genreId>' . $genre->getId() . '</genreId>';
echo '<genreDescription>' . $genre->getDescription() . '</genreDescription>';
echo '</genre>';
}
echo '</projectGenres>';
echo '<projectEngines>';
foreach ( $engines as $engine ) {
echo '<engine>';
echo '<engineId>' . $engine->getId() . '</engineId>';
echo '<engineDescription>' . $engine->getDescription() . '</engineDescription>';
echo '</engine>';
}
echo '</projectEngines>';
echo '</project>';
}
}
private static function pollResponse($request) {
PollManager::respondToPoll($request);
$poll = PollManager::getPoll($request['pollId']);
$totalResponses = 0;
foreach ($poll->getOptions() as $pollOption ) {
$totalResponses += $pollOption->getCount();
}
echo '<poll>';
echo '<totalResponses>' . $totalResponses . '</totalResponses>';
foreach ($poll->getOptions() as $pollOption ) {
echo '<pollOption caption="' . htmlspecialchars($pollOption->getCaption()) . '">' . $pollOption->getCount() . '</pollOption>';
}
echo '</poll>';
}
private static function modifyResourceDeleted($request, $status) {
if( LayoutManager::requireLogin() && array_key_exists('id', $request) ) {
if( ResourceManager::modifyResourceDeleted(ResourceManager::getResource($request['id']), LayoutManager::getUser(), $status) ) {
echo '<success/>';
} else {
error_log('FATAL ERROR: Authorization Error - Not Authorized to edit Resource in ' . __FILE__ . ' at line ' . __LINE__ . ' - Resource Id = ' . $project->getResourceID());
echo '<failure/>';
}
} else {
error_log('FATAL ERROR: Authorization Error - Not Logged in when trying to delete Resource in ' . __FILE__ . ' at line ' . __LINE__ . ' - Resource Id = ' . $project->getResourceID());
echo '<failure/>';
}
}
private static function deleteMember($request) {
if( LayoutManager::requireLogin() && array_key_exists('id', $request) ) {
if( $request['id'] != -1 ) {
$member = MemberManager::getMember($request['id']);
$project = ProjectManager::getProject($member->getProjectID());
if( ProjectManager::authorizeUser($project, LayoutManager::getUser(), false) ) {
$member->deleteObject();
echo '<success/>';
} else {
error_log('FATAL ERROR: Authorization Error - Not Authorized to edit Resource in ' . __FILE__ . ' at line ' . __LINE__ . ' - Resource Id = ' . $project->getResourceID());
echo '<failure/>';
}
} else {
echo '<success/>';
}
} else {
error_log('FATAL ERROR: Authorization Error - Not Logged in when trying to delete member from Project in ' . __FILE__ . ' at line ' . __LINE__ . ' - Resource Id = ' . $project->getResourceID());
echo '<failure/>';
}
}
}
?>
Inferior Minion | ViewVC Help |
Powered by ViewVC 1.0.4 |