PMA\libraries\Tracker::createDatabaseVersion PHP Method

createDatabaseVersion() public static method

Creates tracking version of a database (in other words: create a job to track future changes on the database).
public static createDatabaseVersion ( string $dbname, string $version, string $query, string $tracking_set = 'CREATE DATABASE,ALTER DATABASE,DROP DATABASE' ) : integer
$dbname string name of database
$version string version
$query string query
$tracking_set string set of tracking statements
return integer result of version insertion
    public static function createDatabaseVersion($dbname, $version, $query, $tracking_set = 'CREATE DATABASE,ALTER DATABASE,DROP DATABASE')
    {
        $date = date('Y-m-d H:i:s');
        if ($tracking_set == '') {
            $tracking_set = $GLOBALS['cfg']['Server']['tracking_default_statements'];
        }
        $create_sql = "";
        if ($GLOBALS['cfg']['Server']['tracking_add_drop_database'] == true) {
            $create_sql .= self::getLogComment() . 'DROP DATABASE IF EXISTS ' . Util::backquote($dbname) . ";\n";
        }
        $create_sql .= self::getLogComment() . $query;
        // Save version
        $sql_query = "/*NOTRACK*/\n" . "INSERT INTO " . self::_getTrackingTable() . " (" . "db_name, " . "table_name, " . "version, " . "date_created, " . "date_updated, " . "schema_snapshot, " . "schema_sql, " . "data_sql, " . "tracking " . ") " . "values (\n        '" . $GLOBALS['dbi']->escapeString($dbname) . "',\n        '" . $GLOBALS['dbi']->escapeString('') . "',\n        '" . $GLOBALS['dbi']->escapeString($version) . "',\n        '" . $GLOBALS['dbi']->escapeString($date) . "',\n        '" . $GLOBALS['dbi']->escapeString($date) . "',\n        '" . $GLOBALS['dbi']->escapeString('') . "',\n        '" . $GLOBALS['dbi']->escapeString($create_sql) . "',\n        '" . $GLOBALS['dbi']->escapeString("\n") . "',\n        '" . $GLOBALS['dbi']->escapeString($tracking_set) . "' )";
        $result = PMA_queryAsControlUser($sql_query);
        return $result;
    }

Usage Example

 /**
  * Test for Tracker::createDatabaseVersion()
  *
  * @return void
  * @test
  */
 public function testCreateDatabaseVersion()
 {
     if (!setupForTestsUsingDate()) {
         $this->markTestSkipped("Cannot override internal function date()");
     }
     $GLOBALS['cfg']['Server']['tracking_add_drop_table'] = true;
     $GLOBALS['cfg']['Server']['tracking_add_drop_view'] = true;
     $GLOBALS['cfg']['Server']['user'] = "******";
     $dbi = $this->getMockBuilder('PMA\\libraries\\DatabaseInterface')->disableOriginalConstructor()->getMock();
     $date = date('Y-m-d H:i:s');
     $expectedMainQuery = "/*NOTRACK*/" . "\nINSERT INTO `pmadb`.`tracking` (db_name, table_name, version, date_created, date_updated," . " schema_snapshot, schema_sql, data_sql, tracking ) values (\n        'pma_test',\n        '',\n        '1',\n        '" . $date . "',\n        '" . $date . "',\n        '',\n        '# log " . $date . " pma_test_user" . "\nSHOW DATABASES',\n        '" . "\n',\n        'CREATE DATABASE,ALTER DATABASE,DROP DATABASE' )";
     $GLOBALS['controllink'] = null;
     $dbi->expects($this->exactly(1))->method('query')->with($expectedMainQuery, null, 0, false)->will($this->returnValue("executed"));
     $GLOBALS['dbi'] = $dbi;
     $this->assertEquals('executed', Tracker::createDatabaseVersion('pma_test', '1', 'SHOW DATABASES'));
     tearDownForTestsUsingDate();
 }