コード例 #1
0
ファイル: Query.php プロジェクト: rcrrich/UpdatePackages
function vtws_query($q, $user)
{
    static $vtws_query_cache = array();
    $adb = PearDatabase::getInstance();
    $log = vglobal('log');
    // Cache the instance for re-use
    $moduleRegex = "/[fF][rR][Oo][Mm]\\s+([^\\s;]+)/";
    $moduleName = '';
    if (preg_match($moduleRegex, $q, $m)) {
        $moduleName = trim($m[1]);
    }
    if (!isset($vtws_create_cache[$moduleName]['webserviceobject'])) {
        $webserviceObject = VtigerWebserviceObject::fromQuery($adb, $q);
        $vtws_query_cache[$moduleName]['webserviceobject'] = $webserviceObject;
    } else {
        $webserviceObject = $vtws_query_cache[$moduleName]['webserviceobject'];
    }
    // END
    $handlerPath = $webserviceObject->getHandlerPath();
    $handlerClass = $webserviceObject->getHandlerClass();
    require_once $handlerPath;
    // Cache the instance for re-use
    if (!isset($vtws_query_cache[$moduleName]['handler'])) {
        $handler = new $handlerClass($webserviceObject, $user, $adb, $log);
        $vtws_query_cache[$moduleName]['handler'] = $handler;
    } else {
        $handler = $vtws_query_cache[$moduleName]['handler'];
    }
    // END
    // Cache the instance for re-use
    if (!isset($vtws_query_cache[$moduleName]['meta'])) {
        $meta = $handler->getMeta();
        $vtws_query_cache[$moduleName]['meta'] = $meta;
    } else {
        $meta = $vtws_query_cache[$moduleName]['meta'];
    }
    // END
    $types = vtws_listtypes(null, $user);
    if (!in_array($webserviceObject->getEntityName(), $types['types'])) {
        throw new WebServiceException(WebServiceErrorCode::$ACCESSDENIED, "Permission to perform the operation is denied");
    }
    if (!$meta->hasReadAccess()) {
        throw new WebServiceException(WebServiceErrorCode::$ACCESSDENIED, "Permission to read is denied");
    }
    $result = $handler->query($q);
    VTWS_PreserveGlobal::flush();
    return $result;
}
コード例 #2
0
ファイル: Query.php プロジェクト: hbsman/vtigercrm-5.3.0-ja
function vtws_query($q, $user)
{
    global $log, $adb;
    $webserviceObject = VtigerWebserviceObject::fromQuery($adb, $q);
    $handlerPath = $webserviceObject->getHandlerPath();
    $handlerClass = $webserviceObject->getHandlerClass();
    require_once $handlerPath;
    $handler = new $handlerClass($webserviceObject, $user, $adb, $log);
    $meta = $handler->getMeta();
    $types = vtws_listtypes(null, $user);
    if (!in_array($webserviceObject->getEntityName(), $types['types'])) {
        throw new WebServiceException(WebServiceErrorCode::$ACCESSDENIED, "Permission to perform the operation is denied");
    }
    if (!$meta->hasReadAccess()) {
        throw new WebServiceException(WebServiceErrorCode::$ACCESSDENIED, "Permission to read is denied");
    }
    $result = $handler->query($q);
    VTWS_PreserveGlobal::flush();
    return $result;
}