[castleparadox] / trunk / manager / apiManager.php Repository:
ViewVC logotype

View of /trunk/manager/apiManager.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 73 - (download) (annotate)
Fri Dec 4 09:17:24 2009 UTC (9 years ago) by inferiorminion
File size: 8763 byte(s)
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 &copy; 2008, Castle Paradox
 */

set_include_pathget_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($requesttrue);
                break;
            case 
'memberSearch':
                
APIManager::memberSearch($request['search']);
                break;
            case 
'projectSearch':
                
APIManager::projectSearch($request);
                break;
            case 
'pollResponse':
                
APIManager::pollResponse($request);
                break;
            case 
'undoDeleteResource':
                
APIManager::modifyResourceDeleted($requestfalse);
                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($projectIdResource::$GRAPHIC);
            
$archives ResourceManager::getProjectResources($projectIdResource::$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'] != -) {
                
$member MemberManager::getMember($request['id']);
                
$project ProjectManager::getProject($member->getProjectID());
                if( 
ProjectManager::authorizeUser($projectLayoutManager::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