PRIMARY KEY (id)
)
');
- $idx = new CRM_Core_InnoDBIndexer(self::supportsFts(), array(
- 'civicrm_contact' => array(
- array('first_name', 'last_name'),
- ),
- ));
+ $idx = new CRM_Core_InnoDBIndexer(self::supportsFts(), [
+ 'civicrm_contact' => [
+ ['first_name', 'last_name'],
+ ],
+ ]);
$idx->fixSchemaDifferences();
- $rows = array(
- array(1, 'someone@example.com'),
- array(2, 'this is someone@example.com!'),
- array(3, 'first second'),
- array(4, 'zeroth first second'),
- array(5, 'zeroth first second third'),
- array(6, 'never say never'),
- array(7, 'first someone@example.com second'),
- array(8, 'first someone'),
- array(9, 'firstly someone'),
- );
+ $rows = [
+ [1, 'someone@example.com'],
+ [2, 'this is someone@example.com!'],
+ [3, 'first second'],
+ [4, 'zeroth first second'],
+ [5, 'zeroth first second third'],
+ [6, 'never say never'],
+ [7, 'first someone@example.com second'],
+ [8, 'first someone'],
+ [9, 'firstly someone'],
+ ];
foreach ($rows as $row) {
CRM_Core_DAO::executeQuery("INSERT INTO civicrm_fts_example (id,name) VALUES (%1, %2)",
- array(
- 1 => array($row[0], 'Int'),
- 2 => array($row[1], 'String'),
- ));
+ [
+ 1 => [$row[0], 'Int'],
+ 2 => [$row[1], 'String'],
+ ]);
}
}
*/
public function dataProvider() {
// Array(0=>$inputText, 1=>$language, 2=>$options, 3=>$expectedText, 4=>$matchingIds).
- $cases = array();
-
- $allEmailRows = array(1, 2, 7);
-
- $cases[] = array('someone@example.com', 'like', 'simple', '%someone@example.com%', $allEmailRows);
- $cases[] = array('someone@example.com', 'like', 'phrase', '%someone@example.com%', $allEmailRows);
- $cases[] = array('someone@example.com', 'like', 'wildphrase', '%someone@example.com%', $allEmailRows);
- $cases[] = array('someone@example.com', 'like', 'wildwords', '%someone@example.com%', $allEmailRows);
- $cases[] = array('someone@example.com', 'like', 'wildwords-suffix', '%someone@example.com%', $allEmailRows);
-
- $cases[] = array('someone@example.com', 'fts', 'simple', 'someone@example.com', $allEmailRows);
- $cases[] = array('someone@example.com', 'fts', 'phrase', '"someone@example.com"', $allEmailRows);
- $cases[] = array('someone@example.com', 'fts', 'wildphrase', '"*someone@example.com*"', $allEmailRows);
- $cases[] = array('someone@example.com', 'fts', 'wildwords', '*someone* *example*', $allEmailRows);
- $cases[] = array('someone@example.com', 'fts', 'wildwords-suffix', 'someone* example*', $allEmailRows);
-
- $cases[] = array('someone@example.com', 'ftsbool', 'simple', '+someone +example', $allEmailRows);
- $cases[] = array('someone@example.com', 'ftsbool', 'phrase', '+"someone@example.com"', $allEmailRows);
- $cases[] = array('someone@example.com', 'ftsbool', 'wildphrase', '+"*someone@example.com*"', $allEmailRows);
- $cases[] = array('someone@example.com', 'ftsbool', 'wildwords', '+*someone* +*example*', $allEmailRows);
- $cases[] = array('someone@example.com', 'ftsbool', 'wildwords-suffix', '+someone* +example*', $allEmailRows);
-
- $cases[] = array('first second', 'like', 'simple', '%first second%', array(3, 4, 5));
- $cases[] = array('first second', 'like', 'phrase', '%first second%', array(3, 4, 5));
- $cases[] = array('first second', 'like', 'wildphrase', '%first second%', array(3, 4, 5));
- $cases[] = array('first second', 'like', 'wildwords', '%first%second%', array(3, 4, 5, 7));
- $cases[] = array('first second', 'like', 'wildwords-suffix', '%first%second%', array(3, 4, 5, 7));
-
- $cases[] = array('first second', 'fts', 'simple', 'first second', array(3, 4, 5));
- $cases[] = array('first second', 'fts', 'phrase', '"first second"', array(3, 4, 5));
- $cases[] = array('first second', 'fts', 'wildphrase', '"*first second*"', array(3, 4, 5));
- $cases[] = array('first second', 'fts', 'wildwords', '*first* *second*', array(3, 4, 5, 7));
- $cases[] = array('first second', 'fts', 'wildwords-suffix', 'first* second*', array(3, 4, 5, 7));
-
- $cases[] = array('first second', 'ftsbool', 'simple', '+first +second', array(3, 4, 5));
- $cases[] = array('first second', 'ftsbool', 'phrase', '+"first second"', array(3, 4, 5));
- $cases[] = array('first second', 'ftsbool', 'wildphrase', '+"*first second*"', array(3, 4, 5));
- $cases[] = array('first second', 'ftsbool', 'wildwords', '+*first* +*second*', array(3, 4, 5, 7));
- $cases[] = array('first second', 'ftsbool', 'wildwords-suffix', '+first* +second*', array(3, 4, 5, 7));
-
- $cases[] = array('first second', 'solr', 'simple', 'first second', NULL);
- $cases[] = array('first second', 'solr', 'phrase', '"first second"', NULL);
- $cases[] = array('first second', 'solr', 'wildphrase', '"*first second*"', NULL);
- $cases[] = array('first second', 'solr', 'wildwords', '*first* *second*', NULL);
- $cases[] = array('first second', 'solr', 'wildwords-suffix', 'first* second*', NULL);
+ $cases = [];
+
+ $allEmailRows = [1, 2, 7];
+
+ $cases[] = ['someone@example.com', 'like', 'simple', '%someone@example.com%', $allEmailRows];
+ $cases[] = ['someone@example.com', 'like', 'phrase', '%someone@example.com%', $allEmailRows];
+ $cases[] = ['someone@example.com', 'like', 'wildphrase', '%someone@example.com%', $allEmailRows];
+ $cases[] = ['someone@example.com', 'like', 'wildwords', '%someone@example.com%', $allEmailRows];
+ $cases[] = ['someone@example.com', 'like', 'wildwords-suffix', '%someone@example.com%', $allEmailRows];
+
+ $cases[] = ['someone@example.com', 'fts', 'simple', 'someone@example.com', $allEmailRows];
+ $cases[] = ['someone@example.com', 'fts', 'phrase', '"someone@example.com"', $allEmailRows];
+ $cases[] = ['someone@example.com', 'fts', 'wildphrase', '"*someone@example.com*"', $allEmailRows];
+ $cases[] = ['someone@example.com', 'fts', 'wildwords', '*someone* *example*', $allEmailRows];
+ $cases[] = ['someone@example.com', 'fts', 'wildwords-suffix', 'someone* example*', $allEmailRows];
+
+ $cases[] = ['someone@example.com', 'ftsbool', 'simple', '+"someone" +"example"', $allEmailRows];
+ $cases[] = ['someone@example.com', 'ftsbool', 'phrase', '+"someone@example.com"', $allEmailRows];
+ $cases[] = ['someone@example.com', 'ftsbool', 'wildphrase', '+"*someone@example.com*"', $allEmailRows];
+ $cases[] = ['someone@example.com', 'ftsbool', 'wildwords', '+*someone* +*example*', $allEmailRows];
+ $cases[] = ['someone@example.com', 'ftsbool', 'wildwords-suffix', '+someone* +example*', $allEmailRows];
+
+ $cases[] = ['first second', 'like', 'simple', '%first second%', [3, 4, 5]];
+ $cases[] = ['first second', 'like', 'phrase', '%first second%', [3, 4, 5]];
+ $cases[] = ['first second', 'like', 'wildphrase', '%first second%', [3, 4, 5]];
+ $cases[] = ['first second', 'like', 'wildwords', '%first%second%', [3, 4, 5, 7]];
+ $cases[] = ['first second', 'like', 'wildwords-suffix', '%first%second%', [3, 4, 5, 7]];
+
+ $cases[] = ['first second', 'fts', 'simple', 'first second', [3, 4, 5]];
+ $cases[] = ['first second', 'fts', 'phrase', '"first second"', [3, 4, 5]];
+ $cases[] = ['first second', 'fts', 'wildphrase', '"*first second*"', [3, 4, 5]];
+ $cases[] = ['first second', 'fts', 'wildwords', '*first* *second*', [3, 4, 5, 7]];
+ $cases[] = ['first second', 'fts', 'wildwords-suffix', 'first* second*', [3, 4, 5, 7]];
+
+ $cases[] = ['first second', 'ftsbool', 'simple', '+"first" +"second"', [3, 4, 5]];
+ $cases[] = ['first second', 'ftsbool', 'phrase', '+"first second"', [3, 4, 5]];
+ $cases[] = ['first second', 'ftsbool', 'wildphrase', '+"*first second*"', [3, 4, 5]];
+ $cases[] = ['first second', 'ftsbool', 'wildwords', '+*first* +*second*', [3, 4, 5, 7]];
+ $cases[] = ['first second', 'ftsbool', 'wildwords-suffix', '+first* +second*', [3, 4, 5, 7]];
+
+ $cases[] = ['first second', 'solr', 'simple', 'first second', NULL];
+ $cases[] = ['first second', 'solr', 'phrase', '"first second"', NULL];
+ $cases[] = ['first second', 'solr', 'wildphrase', '"*first second*"', NULL];
+ $cases[] = ['first second', 'solr', 'wildwords', '*first* *second*', NULL];
+ $cases[] = ['first second', 'solr', 'wildwords-suffix', 'first* second*', NULL];
+
+ $cases[] = ['someone@', 'ftsbool', 'simple', '+"someone"', $allEmailRows];
+ $cases[] = ['@example.com', 'ftsbool', 'simple', '+"example.com"', $allEmailRows];
// If user supplies wildcards, then ignore mode.
- foreach (array(
- 'simple',
- 'wildphrase',
- 'wildwords',
- 'wildwords-suffix',
- ) as $mode) {
- $cases[] = array('first% second', 'like', $mode, 'first% second', array(3, 7));
- $cases[] = array('first% second', 'fts', $mode, 'first* second', array(3, 7));
- $cases[] = array('first% second', 'ftsbool', $mode, '+first* +second', array(3, 7));
- $cases[] = array('first% second', 'solr', $mode, 'first* second', NULL);
- $cases[] = array('first second%', 'like', $mode, 'first second%', array(3));
- $cases[] = array('first second%', 'fts', $mode, 'first second*', array(3));
- $cases[] = array('first second%', 'ftsbool', $mode, '+first +second*', array(3));
- $cases[] = array('first second%', 'solr', $mode, 'first second*', NULL);
+ foreach ([
+ 'simple',
+ 'wildphrase',
+ 'wildwords',
+ 'wildwords-suffix',
+ ] as $mode) {
+ $cases[] = ['first% second', 'like', $mode, 'first% second', [3, 7]];
+ $cases[] = ['first% second', 'fts', $mode, 'first* second', [3, 7]];
+ $cases[] = ['first% second', 'ftsbool', $mode, '+first* +second', [3, 7]];
+ $cases[] = ['first% second', 'solr', $mode, 'first* second', NULL];
+ $cases[] = ['first second%', 'like', $mode, 'first second%', [3]];
+ $cases[] = ['first second%', 'fts', $mode, 'first second*', [3]];
+ $cases[] = ['first second%', 'ftsbool', $mode, '+first +second*', [3]];
+ $cases[] = ['first second%', 'solr', $mode, 'first second*', NULL];
}
return $cases;
* @param string $language
* @param string $mode
* @param string $expectedText
+ * @param array|NULL $expectedRowIds
*
* @dataProvider dataProvider
*/
$this->createExampleTable();
$this->assertSqlIds($expectedRowIds, "SELECT id FROM civicrm_fts_example WHERE " . $formatter->formatSql('civicrm_fts_example', 'name', $text));
}
- elseif (in_array($language, array('fts', 'ftsbool'))) {
+ elseif (in_array($language, ['fts', 'ftsbool'])) {
if ($this->supportsFts()) {
$this->createExampleTable();
$this->assertSqlIds($expectedRowIds, "SELECT id FROM civicrm_fts_example WHERE " . $formatter->formatSql('civicrm_fts_example', 'name', $text));