PM-2372 "La clase LicenseManager ejecuta muchos queries..." SOLVED

Issue:
    La clase LicenseManager ejecuta muchos queries para verificar la licencia
Cause:
    Se hacen varios queries a la tabla CONFIGURATION con una misma condicion;
    y tambien ocurre lo mismo con la tabla LANGUAGE
Solution:
    Se setea un solo query para ambas tablas
This commit is contained in:
Victor Saisa Lopez
2015-04-22 17:01:34 -04:00
parent b30275a36d
commit a586fea563
4 changed files with 55 additions and 179 deletions

View File

@@ -1,46 +1,4 @@
<?php
/**
* Configuration.php
* @package workflow.engine.classes.model
*
* ProcessMaker Open Source Edition
* Copyright (C) 2004 - 2011 Colosa Inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
*
*/
if (!class_exists('BaseConfiguration')) {
require_once 'classes/model/om/BaseConfiguration.php';
}
//require_once 'classes/model/Content.php';
/**
* Skeleton subclass for representing a row from the 'CONFIGURATION' table.
*
*
*
* You should add additional methods to this class to meet the
* application requirements. This class will only be generated as
* long as it does not already exist in the output directory.
*
* @package workflow.engine.classes.model
*/
class Configuration extends BaseConfiguration
{
public function create($aData)
@@ -128,9 +86,9 @@ class Configuration extends BaseConfiguration
}
/**
* To check if the configuration row exists, by using Configuration Uid data
* To check if the configuration row exists, by using Configuration Uid data
*/
public function exists($CfgUid, $ObjUid='', $ProUid='', $UsrUid='', $AppUid='')
public function exists($CfgUid, $ObjUid = "", $ProUid = "", $UsrUid = "", $AppUid = "")
{
$oRow = ConfigurationPeer::retrieveByPK( $CfgUid, $ObjUid, $ProUid, $UsrUid, $AppUid );
return (( get_class ($oRow) == 'Configuration' )&&(!is_null($oRow)));

View File

@@ -1,48 +1,31 @@
<?php
/**
* ConfigurationPeer.php
* @package workflow.engine.classes.model
*
* ProcessMaker Open Source Edition
* Copyright (C) 2004 - 2011 Colosa Inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
*
*/
// include base peer class
require_once 'classes/model/om/BaseConfigurationPeer.php';
// include object class
include_once 'classes/model/Configuration.php';
/**
* Skeleton subclass for performing query and update operations on the 'CONFIGURATION' table.
*
*
*
* You should add additional methods to this class to meet the
* application requirements. This class will only be generated as
* long as it does not already exist in the output directory.
*
* @package workflow.engine.classes.model
*/
class ConfigurationPeer extends BaseConfigurationPeer
{
private static $arrayRecord = array();
public static function retrieveByPK($cfg_uid, $obj_uid, $pro_uid, $usr_uid, $app_uid, $con = null)
{
try {
$record = null;
switch ($cfg_uid) {
case "ENVIRONMENT_SETTINGS":
if (!isset(self::$arrayRecord["ENVIRONMENT_SETTINGS"])) {
self::$arrayRecord["ENVIRONMENT_SETTINGS"] = parent::retrieveByPK($cfg_uid, $obj_uid, $pro_uid, $usr_uid, $app_uid, $con);
}
$record = self::$arrayRecord["ENVIRONMENT_SETTINGS"];
break;
default:
$record = parent::retrieveByPK($cfg_uid, $obj_uid, $pro_uid, $usr_uid, $app_uid, $con);
break;
}
//Return
return $record;
} catch (Exception $e) {
throw $e;
}
}
}

View File

@@ -1,46 +1,8 @@
<?php
/**
* Language.php
*
* @package workflow.engine.classes.model
*
* ProcessMaker Open Source Edition
* Copyright (C) 2004 - 2011 Colosa Inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
*/
//require_once 'classes/model/om/BaseLanguage.php';
//require_once 'classes/model/Content.php';
//require_once 'classes/model/IsoCountry.php';
//require_once 'classes/model/Translation.php';
/**
* Skeleton subclass for representing a row from the 'LANGUAGE' table.
*
* You should add additional methods to this class to meet the
* application requirements. This class will only be generated as
* long as it does not already exist in the output directory.
*
*
* @package workflow.engine.classes.model
*/
class Language extends BaseLanguage
{
private static $arrayRecord = array();
private $exceptionFields = array ('','javascript','hidden','phpvariable','private','toolbar','xmlmenu','toolbutton','cellmark','grid','CheckboxTable');
public function load ($sLanUid)
@@ -130,16 +92,32 @@ class Language extends BaseLanguage
return $oDataset->getRow();
}
public function findLocationByLanId ($LAN_ID)
{
$oCriteria = new Criteria( 'workflow' );
$oCriteria->addSelectColumn( LanguagePeer::LAN_LOCATION );
$oCriteria->add( LanguagePeer::LAN_ID, $LAN_ID, Criteria::LIKE );
$oDataset = LanguagePeer::doSelectRS( $oCriteria );
$oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$oDataset->next();
return $oDataset->getRow();
public function findLocationByLanId($languageId)
{
try {
if (!isset(self::$arrayRecord[$languageId])) {
$criteria = new Criteria("workflow");
$criteria->addSelectColumn(LanguagePeer::LAN_LOCATION);
$criteria->add(LanguagePeer::LAN_ID, $languageId, Criteria::LIKE);
$rsCriteria = LanguagePeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$rsCriteria->next();
self::$arrayRecord[$languageId] = $rsCriteria->getRow();
}
$record = self::$arrayRecord[$languageId];
//Return
return $record;
} catch (Exception $e) {
throw $e;
}
}
/*
* Import a language file
*

View File

@@ -1,47 +1,4 @@
<?php
/**
* LanguagePeer.php
* @package workflow.engine.classes.model
*
* ProcessMaker Open Source Edition
* Copyright (C) 2004 - 2011 Colosa Inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
*
*/
// include base peer class
require_once 'classes/model/om/BaseLanguagePeer.php';
// include object class
include_once 'classes/model/Language.php';
/**
* Skeleton subclass for performing query and update operations on the 'LANGUAGE' table.
*
*
*
* You should add additional methods to this class to meet the
* application requirements. This class will only be generated as
* long as it does not already exist in the output directory.
*
* @package workflow.engine.classes.model
*/
class LanguagePeer extends BaseLanguagePeer
{
}