Example #1
0
/**
 * Main zTag functions selector
 *
 * <code>
 * zdbal_zexecute($tagId, $tagFunction, $arrayTag, $arrayTagId, $arrayOrder);
 * </code>
 *
 * @param integer $tagId array id of current zTag of $arrayTag array
 * @param string $tagFunction name of zTag function
 * @param array $arrayTag array with all compiled zTags
 * @param array $arrayTagId array with all Ids values
 * @param array $arrayOrder array with zTag executing order
 *
 * @since 1.0
 */
function zdbal_zexecute($tagId, $tagFunction, &$arrayTag, &$arrayTagId, $arrayOrder)
{
    global $dbHandleDefault;
    $arrParam = $arrayTag[$tagId][ztagParam];
    $strId = $arrParam["id"];
    $strUpdate = $arrParam["update"];
    $strDriver = $arrParam["driver"];
    $strHost = $arrParam["host"];
    $strDatabase = $arrParam["database"];
    $strUser = $arrParam["user"];
    $strPassword = $arrParam["password"];
    $strFilename = $arrParam["filename"];
    $strMode = $arrParam["mode"];
    $strUse = $arrParam["use"];
    $strName = $arrParam["name"];
    $strVar = $arrParam["var"];
    $strTransform = $arrParam["transform"];
    $errorMessage = "";
    switch (strtolower($tagFunction)) {
        /*+
         * Open a database connection to defined driver and parameters
         *
         * <code>
         * <zdbal:open id="mysqlConn" driver="mysql" host="#mysqlHost" database="#mysqlDatabase" user="******" password="******" charset="utf8"/>
         *
         * <zdbal:open id="sqliteConn" driver="sqlite" filename="/ZTag/SQLite.db" />
         * </code>
         *
         * @param string id="MySQL Handle Id"
         * @param string driver="mssql|mysql|pgsql|sqlite|firebird"
         * @param string host="Host"
         * @param string database="Database name"
         * @param string user="******"
         * @param string password="******"
         * @param string port="8023"
         * @param string socket="socket"
         * @param string charset="utf8"
         */
        case 'open':
            $strCharset = $arrParam['charset'];
            $strPort = $arrParam['port'];
            $strSocket = $arrParam['charset'];
            $dbalDriver = constant("dbal{$strDriver}");
            if (strlen($strHost)) {
                ztagReturnConstant($strHost);
            }
            if (strlen($strDatabase)) {
                ztagReturnConstant($strDatabase);
            }
            if (strlen($strUser)) {
                ztagReturnConstant($strUser);
            }
            if (strlen($strPassword)) {
                ztagReturnConstant($strPassword);
            }
            $dbalConfig = new \Doctrine\DBAL\Configuration();
            $dbalParams = array('dbname' => $strDatabase, 'user' => $strUser, 'password' => $strPassword, 'host' => $strHost, 'driver' => $dbalDriver);
            /* Connect to the database */
            $dbHandle = \Doctrine\DBAL\DriverManager::getConnection($dbalParams);
            if ($errorMessage) {
                $errorMessage .= "<br />{$strDriver}{$errorMessage}";
            }
            $arrayTagId[$strId][ztagIdHandle] = $dbHandle;
            $arrayTagId[$strId][ztagIdType] = idTypeDBAL;
            $arrayTagId[$strId][ztagIdState] = idStateOpened;
            break;
            /*+
             * Close the Database connection openned with Id.
             *
             * <code>
             * <zdbal:close use="mysqlConn" />
             * </code>
             *
             * @param string use="mysqlConn"
             */
        /*+
         * Close the Database connection openned with Id.
         *
         * <code>
         * <zdbal:close use="mysqlConn" />
         * </code>
         *
         * @param string use="mysqlConn"
         */
        case 'close':
            $errorMessage .= ztagParamCheck($arrParam, "use");
            $arrayTagId[$strUse][ztagIdHandle]->close();
            $arrayTagId[$strUse][ztagIdState] = idStateClosed;
            break;
            /*+
             * Set a SQL query to use with another zdbal Tag.
             *
             * <code>
             * <zdbal:query use="ociConn" id="ociQuery">
             *   SELECT US.NM_USUARIO userLogin
             *   , P.NM_PESSOA userName
             *   , P.CD_PESSOA userId
             *   , US.CD_SESSAO_LOGIN userLoginLast
             *   , US.CD_SESSAO_LOGIN_ERRO userLoginError
             *   , US.NU_LOGIN_ERROS userLoginErrors
             *   , to_char(US.DT_LOGIN_BLOQUEIO,'yyyy/mm/dd hh24:mi:ss') userLoginBlocked
             *   FROM TB_USUARIO_SISTEMA US
             *   LEFT JOIN TB_PESSOA P ON US.CD_PESSOA_USUARIO = P.CD_PESSOA
             *   AND FL_ATIVO = 'S'
             * </zdbal:query>
             * </code>
             *
             * @param string use="ociConn" The Id Handle from a Open zdbal tag
             * @param string id="ociQuery" Id where the Query will be saved
             * @param string update="ociQuery" Id to be updated
             */
        /*+
         * Set a SQL query to use with another zdbal Tag.
         *
         * <code>
         * <zdbal:query use="ociConn" id="ociQuery">
         *   SELECT US.NM_USUARIO userLogin
         *   , P.NM_PESSOA userName
         *   , P.CD_PESSOA userId
         *   , US.CD_SESSAO_LOGIN userLoginLast
         *   , US.CD_SESSAO_LOGIN_ERRO userLoginError
         *   , US.NU_LOGIN_ERROS userLoginErrors
         *   , to_char(US.DT_LOGIN_BLOQUEIO,'yyyy/mm/dd hh24:mi:ss') userLoginBlocked
         *   FROM TB_USUARIO_SISTEMA US
         *   LEFT JOIN TB_PESSOA P ON US.CD_PESSOA_USUARIO = P.CD_PESSOA
         *   AND FL_ATIVO = 'S'
         * </zdbal:query>
         * </code>
         *
         * @param string use="ociConn" The Id Handle from a Open zdbal tag
         * @param string id="ociQuery" Id where the Query will be saved
         * @param string update="ociQuery" Id to be updated
         */
        case 'query':
            $errorMessage .= ztagParamCheck($arrParam, "use");
            if ($arrayTag[$tagId][ztagContentWidth]) {
                $strContent = ztagVars($arrayTag[$tagId][ztagContent], $arrayTagId);
                if (!strlen($strId)) {
                    $errorMessage .= ztagParamCheck($arrParam, "update");
                    $strId = $strUpdate;
                } else {
                    $errorMessage .= ztagParamCheck($arrParam, "id");
                }
                // $dbStatement = $arrayTagId[$strUse][ztagIdHandle]->prepare($strContent);
                if ($strId) {
                    $arrayTagId[$strId][ztagIdValue] = $strContent;
                    $arrayTagId[$strId][ztagIdLength] = strlen($strContent);
                    $arrayTagId[$strId][ztagIdType] = idTypeQuery;
                    $arrayTagId[$strId][ztagIdHandle] = $arrayTagId[$strUse][ztagIdHandle];
                }
            } else {
                $errorMessage .= "<br />Tag Query cannot be empty!";
            }
            break;
            /*+
             * Return TRUE if the current record is at the first
             *
             * <code>
             * <zdbal:bof use="mysqlConn" />
             * </code>
             *
             * @param string use="mysqlConn" - The Id Handle from a Open zdbal tag
             */
        /*+
         * Return TRUE if the current record is at the first
         *
         * <code>
         * <zdbal:bof use="mysqlConn" />
         * </code>
         *
         * @param string use="mysqlConn" - The Id Handle from a Open zdbal tag
         */
        case "bof":
            $errorMessage .= ztagParamCheck($arrParam, "use");
            $arrayTag[$tagId][ztagResult] = dbBOF($arrayTagId[$strUse][ztagIdHandle]);
            break;
            /*+
             * Return TRUE if the current record is at the first
             *
             * <code>
             * <zdbal:eof use="mysqlConn" />
             * </code>
             *
             * use="mysqlConn" - The Id Handle from a Open zdbal tag
             */
        /*+
         * Return TRUE if the current record is at the first
         *
         * <code>
         * <zdbal:eof use="mysqlConn" />
         * </code>
         *
         * use="mysqlConn" - The Id Handle from a Open zdbal tag
         */
        case "eof":
            $errorMessage .= ztagParamCheck($arrParam, "use");
            $arrayTag[$tagId][ztagResult] = dbEOF($arrayTagId[$strUse][ztagIdHandle]);
            break;
            /*+
             * Return TRUE if the current record is at the first
             *
             * <code>
             * <zdbal:field use="mysqlConn" name="NM_NOME" />
             *
             * Or
             *
             * <zdbal:field name="NM_NOME" />
             * </code>
             *
             * @param string use="mysqlConn" - The Id Handle from a Open zdbal tag
             */
        /*+
         * Return TRUE if the current record is at the first
         *
         * <code>
         * <zdbal:field use="mysqlConn" name="NM_NOME" />
         *
         * Or
         *
         * <zdbal:field name="NM_NOME" />
         * </code>
         *
         * @param string use="mysqlConn" - The Id Handle from a Open zdbal tag
         */
        case "field":
            if ($intFather = $arrayTag[$tagId][ztagFather]) {
                $arrParam["use"] = "Field_{$intFather}";
            }
            // echo "<br />intFather=$intFather";
            $errorMessage .= ztagParamCheck($arrParam, "use,name");
            $dbHandle = $arrayTagId[$strUse][ztagIdHandle];
            $dbHandleValue = $dbHandle[dbHandleFetch][$strName];
            if ($strTransform) {
                $dbHandleValue = ztagTransform($dbHandleValue, $strTransform);
            }
            if ($strVar) {
                $arrayTagId['$' . $strVar][ztagIdValue] = $dbHandleValue;
                $arrayTagId['$' . $strVar][ztagIdType] = idTypeField;
            }
            $arrayTag[$tagId][ztagResult] = $dbHandleValue;
            break;
            /*+
             * FieldVar
             *
             * <code>
             * <zdbal:fieldvar use="mysqlConn" name="NM_NOME" var="$NM_NOME" />
             * </code>
             *
             * @param string use="mysqlConn" The Id Handle from a Open zdbal tag
             * @param string name="NM_NOME"
             * @param string var="$NM_NOME"
             */
        /*+
         * FieldVar
         *
         * <code>
         * <zdbal:fieldvar use="mysqlConn" name="NM_NOME" var="$NM_NOME" />
         * </code>
         *
         * @param string use="mysqlConn" The Id Handle from a Open zdbal tag
         * @param string name="NM_NOME"
         * @param string var="$NM_NOME"
         */
        case "fieldvar":
            $errorMessage .= ztagParamCheck($arrParam, "use,name,var");
            $dbHandle = $arrayTagId[$strUse][ztagIdHandle];
            $dbHandleValue = $dbHandle[dbHandleFetch][$strName];
            if ($strTransform) {
                $dbHandleValue = ztagTransform($dbHandleValue, $strTransform);
            }
            if ($strVar) {
                $arrayTagId['$' . $strVar][ztagIdValue] = $dbHandleValue;
                $arrayTagId['$' . $strVar][ztagIdType] = idTypeField;
            }
            break;
            /*+
             * Prepare
             *
             * <code>
             * <zdbal:prepare conn="oracleConn" use="oracleQuery" />
             * </code>
             *
             * @param string conn="oracleConn"
             * @param string use="oracleQuery"
             */
        /*+
         * Prepare
         *
         * <code>
         * <zdbal:prepare conn="oracleConn" use="oracleQuery" />
         * </code>
         *
         * @param string conn="oracleConn"
         * @param string use="oracleQuery"
         */
        case "prepare":
            $errorMessage .= ztagParamCheck($arrParam, "use,conn");
            $dbHandle = $arrayTagId[$strConn][ztagIdHandle];
            $dbQuery = $arrayTagId[$strUse][ztagIdValue];
            dbPrepare($dbHandle, $dbQuery);
            break;
            /*+
             * Prepare
             *
             * <code>
             * <zdbal:param use="query002" param="P_CD_PESSOA_USUARIO" var="" type="PARAM_INT" />
             * </code>
             *
             * @param string use="query002"
             * @param string param="P_CD_PESSOA_USUARIO"
             * @param string var=""
             * @param string type="PARAM_INT"
             */
        /*+
         * Prepare
         *
         * <code>
         * <zdbal:param use="query002" param="P_CD_PESSOA_USUARIO" var="" type="PARAM_INT" />
         * </code>
         *
         * @param string use="query002"
         * @param string param="P_CD_PESSOA_USUARIO"
         * @param string var=""
         * @param string type="PARAM_INT"
         */
        case "param":
            $errorMessage .= ztagParamCheck($arrParam, "id,value");
            $arrayTagId[$strId][ztagIdValue] = $strValue;
            $arrayTagId[$strId][ztagIdLength] = strlen($strValue);
            $arrayTagId[$strId][ztagIdType] = idTypeFVar;
            break;
            /*+
             * Create
             *
             * <code>
             * <zdbal:create use="query002" />
             * </code>
             *
             * @param string use="query002"
             */
        /*+
         * Create
         *
         * <code>
         * <zdbal:create use="query002" />
         * </code>
         *
         * @param string use="query002"
         */
        case "create":
            $errorMessage .= ztagParamCheck($arrParam, "id");
            if ($arrayTag[$tagId][ztagContentWidth]) {
                $strContent = $arrayTag[$tagId][ztagContent];
                $arrayTagId[$strId][ztagIdValue] = $strContent;
                $arrayTagId[$strId][ztagIdLength] = strlen($strContent);
            }
            break;
            /*+
             * Show
             *
             * <code>
             * <zdbal:show use="query002" />
             * </code>
             *
             * @param string use="query002"
             */
        /*+
         * Show
         *
         * <code>
         * <zdbal:show use="query002" />
         * </code>
         *
         * @param string use="query002"
         */
        case "show":
            $errorMessage .= ztagParamCheck($arrParam, "use");
            $arrayTag[$tagId][ztagResult] = $arrayTagId[$strUse][ztagIdValue];
            break;
            /*+
             * List the available databases for this connection
             *
             * <code>
             * <zdbal:listdatabases use="myConn" var="myTables"/>
             * </code>
             *
             * @param string use="myConn"
             * @param string var="myTables"
             */
        /*+
         * List the available databases for this connection
         *
         * <code>
         * <zdbal:listdatabases use="myConn" var="myTables"/>
         * </code>
         *
         * @param string use="myConn"
         * @param string var="myTables"
         */
        case 'listdatabases':
            $errorMessage .= ztagParamCheck($arrParam, 'use,var');
            $smHandle = $arrayTagId[$strUse][ztagIdHandle]->getSchemaManager();
            if (strlen($strVar)) {
                $arrayTagId['$' . $strVar][ztagIdValue] = $smHandle->listDatabases();
                $arrayTagId['$' . $strVar][ztagIdType] = idTypeFVar;
            }
            // echo "<br /><pre>".print_r( $arrayTagId['$'.$strVar][ztagIdValue], 1);
            break;
            /*+
             * List the tables for the connection
             *
             * <code>
             * <zdbal:listtables use="myConn" var="myTables"/>
             * </code>
             *
             * @param string use="myConn"
             * @param string var="myTables"
             */
        /*+
         * List the tables for the connection
         *
         * <code>
         * <zdbal:listtables use="myConn" var="myTables"/>
         * </code>
         *
         * @param string use="myConn"
         * @param string var="myTables"
         */
        case 'listtables':
            $errorMessage .= ztagParamCheck($arrParam, 'use,var');
            $smHandle = $arrayTagId[$strUse][ztagIdHandle]->getSchemaManager();
            if (strlen($strVar)) {
                $arrayTagId['$' . $strVar][ztagIdValue] = $smHandle->listTableNames();
                $arrayTagId['$' . $strVar][ztagIdType] = idTypeFVar;
            }
            // echo "<br /><pre>".print_r( $arrayTagId['$'.$strVar][ztagIdValue], 1);
            break;
            /*+
             * Return a list of all tables in the current database
             *
             * <code>
             * <zdbal:listtablenames use="myConn" var="myTables"/>
             * </code>
             *
             * @param string use="myConn"
             * @param string var="myTables"
             */
        /*+
         * Return a list of all tables in the current database
         *
         * <code>
         * <zdbal:listtablenames use="myConn" var="myTables"/>
         * </code>
         *
         * @param string use="myConn"
         * @param string var="myTables"
         */
        case 'listtablenames':
            $errorMessage .= ztagParamCheck($arrParam, "use,var");
            $smHandle = $arrayTagId[$strUse][ztagIdHandle]->getSchemaManager();
            if (strlen($strVar)) {
                $arrayTagId['$' . $strVar][ztagIdValue] = $smHandle->listTableNames();
                $arrayTagId['$' . $strVar][ztagIdType] = idTypeFVar;
            }
            // echo "<br /><pre>".print_r( $arrayTagId['$'.$strVar][ztagIdValue], 1);
            break;
            /*+
             * List the columns for a given table.
             *
             * <code>
             * <zdbal:listtablecolumns use="myConn" table="tableName" var="myColumns"/>
             * </code>
             *
             * @param string use="myConn"
             * @param string table="tableName"
             * @param string var="myColumns"
             */
        /*+
         * List the columns for a given table.
         *
         * <code>
         * <zdbal:listtablecolumns use="myConn" table="tableName" var="myColumns"/>
         * </code>
         *
         * @param string use="myConn"
         * @param string table="tableName"
         * @param string var="myColumns"
         */
        case 'listtablecolumns':
            $strTable = $arrParam["table"];
            $errorMessage .= ztagParamCheck($arrParam, "use,table,var");
            $smHandle = $arrayTagId[$strUse][ztagIdHandle]->getSchemaManager();
            if (strlen($strVar) && strlen($strTable)) {
                $tableHandle = $smHandle->listTableColumns($strTable);
                foreach ($tableHandle as $key => $value) {
                    $tableValue[$key]['type'] = $value->getType()->getName();
                    $tableValue[$key]['fixed'] = $value->getFixed();
                    $tableValue[$key]['lenght'] = $value->getLength();
                    $tableValue[$key]['precision'] = $value->getPrecision();
                    $tableValue[$key]['scale'] = $value->getScale();
                    $tableValue[$key]['unsigned'] = $value->getUnsigned();
                    $tableValue[$key]['notnull'] = $value->getNotnull();
                    $tableValue[$key]['autoincrement'] = $value->getAutoincrement();
                    $tableValue[$key]['default'] = $value->getDefault();
                    // $tableValue[$key]['comment'] = $value->getComment();
                }
                $arrayTagId['$' . $strVar][ztagIdValue] = $tableValue;
                $arrayTagId['$' . $strVar][ztagIdType] = idTypeFVar;
            }
            // echo "<br /><pre>".print_r( $arrayTagId['$'.$strVar][ztagIdValue], 1);
            break;
        default:
            $errorMessage .= "<br />Undefined function \"{$tagFunction}\"";
    }
    ztagError($errorMessage, $arrayTag, $tagId);
}
Example #2
0
/**
 * Main zTag functions selector
 *
 * <code>
 * zdb_zexecute($tagId, $tagFunction, $arrayTag, $arrayTagId, $arrayOrder);
 * </code>
 *
 * @param integer $tagId array id of current zTag of $arrayTag array
 * @param string $tagFunction name of zTag function
 * @param array $arrayTag array with all compiled zTags
 * @param array $arrayTagId array with all Ids values
 * @param array $arrayOrder array with zTag executing order
 *
 * @since 1.0
 */
function zdb_zexecute($tagId, $tagFunction, &$arrayTag, &$arrayTagId, $arrayOrder)
{
    global $dbHandleDefault;
    $arrParam = $arrayTag[$tagId][ztagParam];
    $strId = $arrParam["id"];
    $strUpdate = $arrParam["update"];
    $strDriver = $arrParam["driver"];
    $strHost = $arrParam["host"];
    $strDatabase = $arrParam["database"];
    $strUser = $arrParam["user"];
    $strPassword = $arrParam["password"];
    $strFilename = $arrParam["filename"];
    $strMode = $arrParam["mode"];
    $strUse = $arrParam["use"];
    $strName = $arrParam["name"];
    $strTransform = $arrParam["transform"];
    $errorMessage = "";
    switch (strtolower($tagFunction)) {
        /*+
         * Open a database connection to defined driver and parameters
         *
         * <code>
         * <zdb:open id="mysqlConn" driver="mysql" host="#mysqlHost" database="#mysqlDatabase" user="******" password="******" charset="utf8"/>
         *
         * <zdb:open id="sqliteConn" driver="sqlite" filename="/ZTag/SQLite.db" />
         * </code>
         *
         * @param string id="MySQL Handle Id"
         * @param string driver="mssql|mysql|pgsql|sqlite|firebird"
         * @param string host="Host"
         * @param string database="Database name"
         * @param string user="******"
         * @param string password="******"
         * @param string charset="utf8"
         */
        case "open":
            $strCharset = $arrParam["charset"];
            $strDriver = constant("db{$strDriver}");
            switch ($strDriver) {
                case dbOCI:
                    $blnDatabase = 0;
                    break;
                default:
                    $blnDatabase = 1;
            }
            if (strlen($strHost)) {
                ztagReturnConstant($strHost);
            }
            if (strlen($strDatabase)) {
                ztagReturnConstant($strDatabase);
            }
            if (strlen($strUser)) {
                ztagReturnConstant($strUser);
            }
            if (strlen($strPassword)) {
                ztagReturnConstant($strPassword);
            }
            switch ($strDriver) {
                case dbSQLite:
                    if (strlen($strFilename)) {
                        ztagReturnConstant($strFilename);
                    }
                    if (strlen($strMode)) {
                        ztagReturnConstant($strMode);
                    }
                    if (!$strMode) {
                        $strMode = 0666;
                    }
                    $errorMessage .= ztagParamCheck($arrParam, "id,driver,filename");
                    $dbHandle = dbOpenFile($strDriver, $strFilename, $strMode);
                    if ($arrParam["name"]) {
                        $dbHandleDefault = $dbHandle;
                    }
                    break;
                case dbFirebird:
                    // @TODO melhorar o esquema de retornar as variáveis, podemos usar o @@ para todas as variáveis, inclusive as constantes
                    $errorMessage .= ztagParamCheck($arrParam, "id,driver,user,password,database");
                    $dbHandle = dbOpen($strDriver, $strHost, $strDatabase, $strUser, $strPassword);
                    break;
                case dbMySQL:
                    // @TODO melhorar o esquema de retornar as variáveis, podemos usar o @@ para todas as variáveis, inclusive as constantes
                    if (!$strDatabase && $blnDatabase) {
                        $checkParam .= ",database";
                    }
                    $errorMessage .= ztagParamCheck($arrParam, "id,driver,host,user,password{$checkParam}");
                    $dbHandle = dbOpen($strDriver, $strHost, $strDatabase, $strUser, $strPassword, $strCharset);
                default:
                    // @TODO melhorar o esquema de retornar as variáveis, podemos usar o @@ para todas as variáveis, inclusive as constantes
                    if (!$strDatabase && $blnDatabase) {
                        $checkParam .= ",database";
                    }
                    $errorMessage .= ztagParamCheck($arrParam, "id,driver,host,user,password{$checkParam}");
                    $dbHandle = dbOpen($strDriver, $strHost, $strDatabase, $strUser, $strPassword);
            }
            if ($errorMessage) {
                $errorMessage .= "<br />{$strDriver}{$errorMessage}";
            }
            $arrayTagId[$strId][ztagIdHandle] = $dbHandle;
            $arrayTagId[$strId][ztagIdType] = idTypeDB;
            $arrayTagId[$strId][ztagIdState] = idStateOpened;
            break;
            /*+
             * Close the Database connection openned with Id.
             *
             * <code>
             * <zdb:close use="mysqlConn" />
             * </code>
             *
             * @param string use="mysqlConn"
             */
        /*+
         * Close the Database connection openned with Id.
         *
         * <code>
         * <zdb:close use="mysqlConn" />
         * </code>
         *
         * @param string use="mysqlConn"
         */
        case "close":
            $errorMessage .= ztagParamCheck($arrParam, "use");
            dbClose($arrayTagId[$strUse][ztagIdHandle]);
            $arrayTagId[$strUse][ztagIdState] = idStateClosed;
            break;
            /*+
             * Set a SQL query to use with another zDB Tag.
             *
             * <code>
             * <zdb:query use="ociConn" id="ociQuery">
             *   SELECT US.NM_USUARIO userLogin
             *   , P.NM_PESSOA userName
             *   , P.CD_PESSOA userId
             *   , US.CD_SESSAO_LOGIN userLoginLast
             *   , US.CD_SESSAO_LOGIN_ERRO userLoginError
             *   , US.NU_LOGIN_ERROS userLoginErrors
             *   , to_char(US.DT_LOGIN_BLOQUEIO,'yyyy/mm/dd hh24:mi:ss') userLoginBlocked
             *   FROM TB_USUARIO_SISTEMA US
             *   LEFT JOIN TB_PESSOA P ON US.CD_PESSOA_USUARIO = P.CD_PESSOA
             *   AND FL_ATIVO = 'S'
             * </zdb:query>
             * </code>
             *
             * @param string use="ociConn" The Id Handle from a Open zDB tag
             * @param string id="ociQuery" Id where the Query will be saved
             * @param string update="ociQuery" Id to be updated
             */
        /*+
         * Set a SQL query to use with another zDB Tag.
         *
         * <code>
         * <zdb:query use="ociConn" id="ociQuery">
         *   SELECT US.NM_USUARIO userLogin
         *   , P.NM_PESSOA userName
         *   , P.CD_PESSOA userId
         *   , US.CD_SESSAO_LOGIN userLoginLast
         *   , US.CD_SESSAO_LOGIN_ERRO userLoginError
         *   , US.NU_LOGIN_ERROS userLoginErrors
         *   , to_char(US.DT_LOGIN_BLOQUEIO,'yyyy/mm/dd hh24:mi:ss') userLoginBlocked
         *   FROM TB_USUARIO_SISTEMA US
         *   LEFT JOIN TB_PESSOA P ON US.CD_PESSOA_USUARIO = P.CD_PESSOA
         *   AND FL_ATIVO = 'S'
         * </zdb:query>
         * </code>
         *
         * @param string use="ociConn" The Id Handle from a Open zDB tag
         * @param string id="ociQuery" Id where the Query will be saved
         * @param string update="ociQuery" Id to be updated
         */
        case "query":
            $errorMessage .= ztagParamCheck($arrParam, "use");
            if ($arrayTag[$tagId][ztagContentWidth]) {
                $strContent = ztagVars($arrayTag[$tagId][ztagContent], $arrayTagId);
                if (!strlen($strId)) {
                    $errorMessage .= ztagParamCheck($arrParam, "update");
                    $strId = $strUpdate;
                } else {
                    $errorMessage .= ztagParamCheck($arrParam, "id");
                }
                if ($strId) {
                    $arrayTagId[$strId][ztagIdValue] = $strContent;
                    $arrayTagId[$strId][ztagIdLength] = strlen($strContent);
                    $arrayTagId[$strId][ztagIdType] = idTypeQuery;
                    $arrayTagId[$strId][ztagIdHandle] = $arrayTagId[$strUse][ztagIdHandle];
                }
                dbQuery($arrayTagId[$strId][ztagIdHandle], $strContent);
            } else {
                $errorMessage .= "<br />Tag Query cannot be empty!";
            }
            break;
            /*+
             * Return TRUE if the current record is at the first
             *
             * <code>
             * <zdb:bof use="mysqlConn" />
             * </code>
             *
             * @param string use="mysqlConn" - The Id Handle from a Open zDB tag
             */
        /*+
         * Return TRUE if the current record is at the first
         *
         * <code>
         * <zdb:bof use="mysqlConn" />
         * </code>
         *
         * @param string use="mysqlConn" - The Id Handle from a Open zDB tag
         */
        case "bof":
            $errorMessage .= ztagParamCheck($arrParam, "use");
            $arrayTag[$tagId][ztagResult] = dbBOF($arrayTagId[$strUse][ztagIdHandle]);
            break;
            /*+
             * Return TRUE if the current record is at the first
             *
             * <code>
             * <zdb:eof use="mysqlConn" />
             * </code>
             *
             * use="mysqlConn" - The Id Handle from a Open zDB tag
             */
        /*+
         * Return TRUE if the current record is at the first
         *
         * <code>
         * <zdb:eof use="mysqlConn" />
         * </code>
         *
         * use="mysqlConn" - The Id Handle from a Open zDB tag
         */
        case "eof":
            $errorMessage .= ztagParamCheck($arrParam, "use");
            $arrayTag[$tagId][ztagResult] = dbEOF($arrayTagId[$strUse][ztagIdHandle]);
            break;
            /*+
             * Return TRUE if the current record is at the first
             *
             * <code>
             * <zdb:field use="mysqlConn" name="NM_NOME" />
             *
             * Or
             *
             * <zdb:field name="NM_NOME" />
             * </code>
             *
             * @param string use="mysqlConn" - The Id Handle from a Open zDB tag
             */
        /*+
         * Return TRUE if the current record is at the first
         *
         * <code>
         * <zdb:field use="mysqlConn" name="NM_NOME" />
         *
         * Or
         *
         * <zdb:field name="NM_NOME" />
         * </code>
         *
         * @param string use="mysqlConn" - The Id Handle from a Open zDB tag
         */
        case "field":
            if ($intFather = $arrayTag[$tagId][ztagFather]) {
                $arrParam["use"] = "Field_{$intFather}";
            }
            // echo "<br />intFather=$intFather";
            $strVar = $arrParam["var"];
            $errorMessage .= ztagParamCheck($arrParam, "use,name");
            $dbHandle = $arrayTagId[$strUse][ztagIdHandle];
            $dbHandleValue = $dbHandle[dbHandleFetch][$strName];
            if ($strTransform) {
                $dbHandleValue = ztagTransform($dbHandleValue, $strTransform);
            }
            if ($strVar) {
                $arrayTagId["\$" . $strVar][ztagIdValue] = $dbHandleValue;
                $arrayTagId["\$" . $strVar][ztagIdType] = idTypeField;
            }
            $arrayTag[$tagId][ztagResult] = $dbHandleValue;
            break;
            /*+
             * FieldVar
             *
             * <code>
             * <zdb:fieldvar use="mysqlConn" name="NM_NOME" var="$NM_NOME" />
             * </code>
             *
             * @param string use="mysqlConn" The Id Handle from a Open zDB tag
             * @param string name="NM_NOME"
             * @param string var="$NM_NOME"
             */
        /*+
         * FieldVar
         *
         * <code>
         * <zdb:fieldvar use="mysqlConn" name="NM_NOME" var="$NM_NOME" />
         * </code>
         *
         * @param string use="mysqlConn" The Id Handle from a Open zDB tag
         * @param string name="NM_NOME"
         * @param string var="$NM_NOME"
         */
        case "fieldvar":
            $strVar = $arrParam["var"];
            $errorMessage .= ztagParamCheck($arrParam, "use,name,var");
            $dbHandle = $arrayTagId[$strUse][ztagIdHandle];
            $dbHandleValue = $dbHandle[dbHandleFetch][$strName];
            if ($strTransform) {
                $dbHandleValue = ztagTransform($dbHandleValue, $strTransform);
            }
            if ($strVar) {
                $arrayTagId["\$" . $strVar][ztagIdValue] = $dbHandleValue;
                $arrayTagId["\$" . $strVar][ztagIdType] = idTypeField;
            }
            break;
            /*+
             * Prepare
             *
             * <code>
             * <zdb:prepare conn="oracleConn" use="oracleQuery" />
             * </code>
             *
             * @param string conn="oracleConn"
             * @param string use="oracleQuery"
             */
        /*+
         * Prepare
         *
         * <code>
         * <zdb:prepare conn="oracleConn" use="oracleQuery" />
         * </code>
         *
         * @param string conn="oracleConn"
         * @param string use="oracleQuery"
         */
        case "prepare":
            $errorMessage .= ztagParamCheck($arrParam, "use,conn");
            $dbHandle = $arrayTagId[$strConn][ztagIdHandle];
            $dbQuery = $arrayTagId[$strUse][ztagIdValue];
            dbPrepare($dbHandle, $dbQuery);
            break;
            /*+
             * Prepare
             *
             * <code>
             * <zdb:param use="query002" param="P_CD_PESSOA_USUARIO" var="" type="PARAM_INT" />
             * </code>
             *
             * @param string use="query002"
             * @param string param="P_CD_PESSOA_USUARIO"
             * @param string var=""
             * @param string type="PARAM_INT"
             */
        /*+
         * Prepare
         *
         * <code>
         * <zdb:param use="query002" param="P_CD_PESSOA_USUARIO" var="" type="PARAM_INT" />
         * </code>
         *
         * @param string use="query002"
         * @param string param="P_CD_PESSOA_USUARIO"
         * @param string var=""
         * @param string type="PARAM_INT"
         */
        case "param":
            $errorMessage .= ztagParamCheck($arrParam, "id,value");
            $arrayTagId[$strId][ztagIdValue] = $strValue;
            $arrayTagId[$strId][ztagIdLength] = strlen($strValue);
            $arrayTagId[$strId][ztagIdType] = idTypeFVar;
            break;
            /*+
             * Create
             *
             * <code>
             * <zdb:create use="query002" />
             * </code>
             *
             * @param string use="query002"
             */
        /*+
         * Create
         *
         * <code>
         * <zdb:create use="query002" />
         * </code>
         *
         * @param string use="query002"
         */
        case "create":
            $errorMessage .= ztagParamCheck($arrParam, "id");
            if ($arrayTag[$tagId][ztagContentWidth]) {
                $strContent = $arrayTag[$tagId][ztagContent];
                $arrayTagId[$strId][ztagIdValue] = $strContent;
                $arrayTagId[$strId][ztagIdLength] = strlen($strContent);
            }
            break;
            /*+
             * Show
             *
             * <code>
             * <zdb:show use="query002" />
             * </code>
             *
             * @param string use="query002"
             */
        /*+
         * Show
         *
         * <code>
         * <zdb:show use="query002" />
         * </code>
         *
         * @param string use="query002"
         */
        case "show":
            $errorMessage .= ztagParamCheck($arrParam, "use");
            $arrayTag[$tagId][ztagResult] = $arrayTagId[$strUse][ztagIdValue];
            break;
        default:
            $errorMessage .= "<br />Undefined function \"{$tagFunction}\"";
    }
    ztagError($errorMessage, $arrayTag, $tagId);
}