コード例 #1
0
ファイル: pmTablesProxy.php プロジェクト: rrsc/processmaker
    /**
     * get database connection list
     */
    public function getDbConnectionsList ()
    {
        if (! isset( $_SESSION['PROCESS'] )) {
            $_SESSION['PROCESS'] = $_POST['PRO_UID'];
        }
        G::LoadClass( 'dbConnections' );
        $proUid = $_POST['PRO_UID'];
        $dbConn = new DbConnections();
        $dbConnections = $dbConn->getConnectionsProUid( $proUid, array('mysql') );
        
        $workSpace = new workspaceTools(SYS_SYS);
        $workspaceDB = $workSpace->getDBInfo();

        if ($workspaceDB['DB_NAME'] == $workspaceDB['DB_RBAC_NAME']) {
            $defaultConnections = array (array ('DBS_UID' => 'workflow','DBS_NAME' => 'Workflow'));
        } else {
            $defaultConnections = array (array ('DBS_UID' => 'workflow','DBS_NAME' => 'Workflow'),
                                         array ('DBS_UID' => 'rp','DBS_NAME' => 'REPORT'));    
        }
 
        $dbConnections = array_merge( $defaultConnections, $dbConnections );
        
        return $dbConnections;
    }
コード例 #2
0
ファイル: Content.php プロジェクト: emildev35/processmaker
 public function regenerateContent($langs, $workSpace = SYS_SYS)
 {
     //Search the language
     $key = array_search('en', $langs);
     if ($key === false) {
         $key = array_search(SYS_LANG, $langs);
         if ($key === false) {
             $key = '0';
         }
     }
     $this->langsAsoc = array();
     foreach ($langs as $key => $value) {
         $this->langsAsoc[$value] = $value;
     }
     $this->langs = $langs;
     $this->rowsProcessed = 0;
     $this->rowsInserted = 0;
     $this->rowsUnchanged = 0;
     $this->rowsClustered = 0;
     //Creating table CONTENT_BACKUP
     $connection = Propel::getConnection('workflow');
     $oStatement = $connection->prepareStatement("CREATE TABLE IF NOT EXISTS `CONTENT_BACKUP` (\n            `CON_CATEGORY` VARCHAR(30) default '' NOT NULL,\n            `CON_PARENT` VARCHAR(32) default '' NOT NULL,\n            `CON_ID` VARCHAR(100) default '' NOT NULL,\n            `CON_LANG` VARCHAR(10) default '' NOT NULL,\n            `CON_VALUE` MEDIUMTEXT NOT NULL,\n            CONSTRAINT CONTENT_BACKUP_PK PRIMARY KEY (CON_CATEGORY,CON_PARENT,CON_ID,CON_LANG)\n        )Engine=InnoDB  DEFAULT CHARSET='utf8' COMMENT='Table for add content';");
     $oStatement->executeQuery();
     $sql = " SELECT DISTINCT CON_LANG\n                FROM CONTENT ";
     $stmt = $connection->createStatement();
     $rs = $stmt->executeQuery($sql, ResultSet::FETCHMODE_ASSOC);
     while ($rs->next()) {
         $row = $rs->getRow();
         $language = $row['CON_LANG'];
         if (array_search($row['CON_LANG'], $langs) === false) {
             Content::removeLanguageContent($row['CON_LANG']);
         }
     }
     $sql = " SELECT CON_ID, CON_CATEGORY, CON_LANG, CON_PARENT, CON_VALUE\n                FROM CONTENT\n                ORDER BY CON_ID, CON_CATEGORY, CON_PARENT, CON_LANG";
     G::LoadClass("wsTools");
     $workSpace = new workspaceTools($workSpace);
     $workSpace->getDBInfo();
     $link = @mysql_pconnect($workSpace->dbHost, $workSpace->dbUser, $workSpace->dbPass) or die("Could not connect");
     mysql_select_db($workSpace->dbName, $link);
     mysql_query("SET NAMES 'utf8';");
     mysql_query("SET FOREIGN_KEY_CHECKS=0;");
     mysql_query('SET OPTION SQL_BIG_SELECTS=1');
     $result = mysql_unbuffered_query($sql, $link);
     $list = array();
     $default = array();
     $sw = array('CON_ID' => '', 'CON_CATEGORY' => '', 'CON_PARENT' => '');
     while ($row = mysql_fetch_assoc($result)) {
         if ($sw['CON_ID'] == $row['CON_ID'] && $sw['CON_CATEGORY'] == $row['CON_CATEGORY'] && $sw['CON_PARENT'] == $row['CON_PARENT']) {
             $list[] = $row;
         } else {
             $this->rowsClustered++;
             if (count($langs) != count($list)) {
                 $this->checkLanguage($list, $default);
             } else {
                 $this->rowsUnchanged = $this->rowsUnchanged + count($langs);
             }
             $sw = array();
             $sw['CON_ID'] = $row['CON_ID'];
             $sw['CON_CATEGORY'] = $row['CON_CATEGORY'];
             $sw['CON_LANG'] = $row['CON_LANG'];
             $sw['CON_PARENT'] = $row['CON_PARENT'];
             unset($list);
             unset($default);
             $list = array();
             $default = array();
             $list[] = $row;
         }
         if ($sw['CON_LANG'] == $langs[$key]) {
             $default = $row;
         }
         $this->rowsProcessed++;
     }
     if (count($langs) != count($list)) {
         $this->checkLanguage($list, $default);
     } else {
         $this->rowsUnchanged = $this->rowsUnchanged + count($langs);
     }
     mysql_free_result($result);
     $total = $this->rowsProcessed + $this->rowsInserted;
     $statement = $connection->prepareStatement("INSERT INTO CONTENT\n            SELECT CON_CATEGORY, CON_PARENT, CON_ID , CON_LANG, CON_VALUE\n            FROM CONTENT_BACKUP");
     $statement->executeQuery();
     $statement = $connection->prepareStatement("DROP TABLE CONTENT_BACKUP");
     $statement->executeQuery();
     //close connection
     $sql = "SELECT * FROM information_schema.processlist WHERE command = 'Sleep' and user = SUBSTRING_INDEX(USER(),'@',1) and db = DATABASE() ORDER BY id;";
     $stmt = $connection->createStatement();
     $rs = $stmt->executeQuery($sql, ResultSet::FETCHMODE_ASSOC);
     while ($rs->next()) {
         $row = $rs->getRow();
         $oStatement = $connection->prepareStatement("kill " . $row['ID']);
         $oStatement->executeQuery();
     }
     if (!isset($_SERVER['SERVER_NAME'])) {
         CLI::logging("Rows Processed ---> {$this->rowsProcessed} ..... \n");
         CLI::logging("Rows Clustered ---> {$this->rowsClustered} ..... \n");
         CLI::logging("Rows Unchanged ---> {$this->rowsUnchanged} ..... \n");
         CLI::logging("Rows Inserted  ---> {$this->rowsInserted} ..... \n");
         CLI::logging("Rows Total     ---> {$total} ..... \n");
     }
 }