Upon moving the project back to its proper repository, it should strictly follow the Drupal coding standards, especially the documentation standards.
If you want to help, please make sure you are closely familiar with these standards and keep to them! It is also highly recommended to use an IDE with strict warning settings to easily find most problems (and maybe even automate part of the corrections).

The following is an incomplete list of our current coding problems:

  • There should be a blank linke between the initial <?php and the /** starting the file doc in PHP files (since core also does that in almost all cases). Also, there should be a blank line before the closing } of a class/interface/trait definition. There shouldn't be a blank line following any opening {, except for classes/interfaces/traits.
  • Order of doxygen tags
  • Proper type documentation; Especially: use "bool" and "int", not "boolean" and "integer", for data type docs; use string[] instead of array if you know its an array of strings (etc.); use @return $this, not @return self.
  • Always use interfaces, not classes, for type hinting (also in doc comments!).
  • Remove unnecessary imports
  • Use elseif instead of else if.
  • Use $entity_class::create() instead of entity_create().
  • Variable names should be explanatory for the variable use, and be neither too short (e.g., one letter only in few cases (more or less only in for or foreach loops)) nor too long (e.g., $desired_state_setter_method). Also, use $index not $entity if you know it's an index (unless you are overriding a method or implementing a hook). And keep consistent: especially, use $datasource only for plugin objects and $datasource_id for the IDs (same for servers, indexes, etc.). Finally, variables should use snake case.
  • Too complicated code should use inline comments to explain what is going on. (If you don't understand a specific section yourself, just ask me or whoever wrote it.)
    At the same time, trivial code should not be documented just stating what happens. (E.g., not each form element needs an "Add form element XY" comment above it.)
    Inline comments should also (like all other comments) form complete sentences and end with a period.
  • Use \Drupal\search_api\Index\IndexInterface::DATASOURCE_ID_SEPARATOR instead of hardcoding | so we can then easily switch to using . instead.
  • Pass $e as the third parameter when wrapping an exception into a SearchApiException.
  • Not really code style, but still good to fix here: in PHPUnit test cases' assertEquals() calls, the expected value should come first, then the actual value. Only that way the output in case of a fail is correct. (For Drupal tests, I don't think it matters.)
  • Remove translation from exception messages – see #2055851: Remove translation of exception messages.

And here is the list of files that need to be looked at. If you want to work on one, please strike through its name and add yours next to it, so we avoid collissions as well as possible.

  • config/install/search_api.settings.yml – drunken monkey
  • config/schema/search_api.datasource.schema.yml – drunken monkey
  • config/schema/search_api.index.schema.yml – drunken monkey
  • config/schema/search_api.processor.schema.yml – drunken monkey
  • config/schema/search_api.schema.yml – drunken monkey
  • config/schema/search_api.server.schema.yml – drunken monkey
  • css/search_api.admin.css – drunken monkey
  • js/index-active-formatters.js – drunken monkey
  • search_api.api.php – drunken monkey
  • search_api.drush.inc – drunken monkey
  • search_api.info.yml – drunken monkey
  • search_api.install – drunken monkey
  • search_api.libraries.yml – drunken monkey
  • search_api.links.action.yml – drunken monkey
  • search_api.links.menu.yml – drunken monkey
  • search_api.links.task.yml – drunken monkey
  • search_api.module – drunken monkey
  • search_api.routing.yml – drunken monkey
  • search_api.services.yml – drunken monkey
  • search_api.theme.inc – drunken monkey
  • search_api.views.inc – drunken monkey
  • search_api_db/config/install/search_api_db.settings.yml – drunken monkey
  • search_api_db/config/schema/search_api_db.backend.schema.yml – drunken monkey
  • search_api_db/config/schema/search_api_db.schema.yml – drunken monkey
  • search_api_db/search_api_db.info.yml – drunken monkey
  • search_api_db/src/Plugin/SearchApi/Backend/SearchApiDbBackend.php – drunken monkey
  • search_api_db/src/Tests/SearchApiDbTest.php – drunken monkey
  • search_api_db/tests/modules/search_api_test_db/config/install/field.field.entity_test.body.yml – drunken monkey
  • search_api_db/tests/modules/search_api_test_db/config/install/field.field.entity_test.keywords.yml – drunken monkey
  • search_api_db/tests/modules/search_api_test_db/config/install/field.instance.entity_test.article.body.yml – drunken monkey
  • search_api_db/tests/modules/search_api_test_db/config/install/field.instance.entity_test.article.keywords.yml – drunken monkey
  • search_api_db/tests/modules/search_api_test_db/config/install/field.instance.entity_test.item.body.yml – drunken monkey
  • search_api_db/tests/modules/search_api_test_db/config/install/field.instance.entity_test.item.keywords.yml – drunken monkey
  • search_api_db/tests/modules/search_api_test_db/config/install/search_api.index.database_search_index.yml – drunken monkey
  • search_api_db/tests/modules/search_api_test_db/config/install/search_api.server.database_search_server.yml – drunken monkey
  • search_api_db/tests/modules/search_api_test_db/search_api_test_db.info.yml – drunken monkey
  • src/Annotation/SearchApiBackend.php – drunken monkey
  • src/Annotation/SearchApiDatasource.php – drunken monkey
  • src/Annotation/SearchApiProcessor.php – drunken monkey
  • src/Annotation/SearchApiTracker.php – drunken monkey
  • src/Backend/BackendInterface.php – drunken monkey
  • src/Backend/BackendPluginBase.php – drunken monkey
  • src/Backend/BackendPluginManager.php – drunken monkey
  • src/Backend/BackendSpecificInterface.php – drunken monkey
  • src/Batch/IndexBatchHelper.php – drunken monkey
  • src/Controller/SearchApiIndexController.php – drunken monkey
  • src/Controller/SearchApiServerController.php – drunken monkey
  • src/Datasource/DatasourceInterface.php – drunken monkey
  • src/Datasource/DatasourcePluginBase.php – drunken monkey
  • src/Datasource/DatasourcePluginManager.php – drunken monkey
  • src/Entity/Index.php – drunken monkey
  • src/Entity/Server.php – drunken monkey
  • src/Exception/SearchApiException.php – drunken monkey
  • src/Form/IndexClearConfirmForm.php – drunken monkey
  • src/Form/IndexDeleteConfirmForm.php – drunken monkey
  • src/Form/IndexDisableConfirmForm.php – drunken monkey
  • src/Form/IndexFieldsForm.php – drunken monkey
  • src/Form/IndexFiltersForm.php – drunken monkey
  • src/Form/IndexForm.php – drunken monkey
  • src/Form/IndexReindexConfirmForm.php – drunken monkey
  • src/Form/IndexStatusForm.php – drunken monkey
  • src/Form/ServerClearConfirmForm.php – drunken monkey
  • src/Form/ServerDeleteConfirmForm.php – drunken monkey
  • src/Form/ServerDisableConfirmForm.php – drunken monkey
  • src/Form/ServerForm.php – drunken monkey
  • src/Form/ServerStatusForm.php – drunken monkey
  • src/Index/IndexInterface.php – drunken monkey
  • src/IndexListBuilder.php – drunken monkey
  • src/Item/AdditionalFieldInterface.php – drunken monkey
  • src/Item/AdditionalField.php – drunken monkey
  • src/Item/FieldInterface.php – drunken monkey
  • src/Item/Field.php – drunken monkey
  • src/Item/FieldTrait.php – drunken monkey
  • src/Item/GenericFieldInterface.php – drunken monkey
  • src/Item/ItemInterface.php – drunken monkey
  • src/Item/Item.php – drunken monkey
  • src/Plugin/ConfigurablePluginBase.php – drunken monkey
  • src/Plugin/ConfigurablePluginInterface.php – drunken monkey
  • src/Plugin/IndexPluginBase.php – drunken monkey
  • src/Plugin/IndexPluginInterface.php – drunken monkey
  • src/Plugin/SearchApi/Datasource/ContentEntityDatasource.php – drunken monkey
  • src/Plugin/SearchApi/Datasource/ContentEntityDatasourceDeriver.php – drunken monkey
  • src/Plugin/SearchApi/Processor/AddURL.php – drunken monkey
  • src/Plugin/SearchApi/Processor/AggregatedField.php – drunken monkey
  • src/Plugin/SearchApi/Processor/ContentAccess.php – drunken monkey
  • src/Plugin/SearchApi/Processor/Highlight.php – drunken monkey
  • src/Plugin/SearchApi/Processor/HtmlFilter.php – drunken monkey
  • src/Plugin/SearchApi/Processor/IgnoreCase.php – drunken monkey
  • src/Plugin/SearchApi/Processor/IgnoreCharacter.php – drunken monkey
  • src/Plugin/SearchApi/Processor/Language.php – drunken monkey
  • src/Plugin/SearchApi/Processor/NodeStatus.php – drunken monkey
  • src/Plugin/SearchApi/Processor/RenderedItem.php – drunken monkey
  • src/Plugin/SearchApi/Processor/Resources/Cc.php – drunken monkey
  • src/Plugin/SearchApi/Processor/Resources/Cf.php – drunken monkey
  • src/Plugin/SearchApi/Processor/Resources/Co.php – drunken monkey
  • src/Plugin/SearchApi/Processor/Resources/Mc.php – drunken monkey
  • src/Plugin/SearchApi/Processor/Resources/Me.php – drunken monkey
  • src/Plugin/SearchApi/Processor/Resources/Mn.php – drunken monkey
  • src/Plugin/SearchApi/Processor/Resources/Pc.php – drunken monkey
  • src/Plugin/SearchApi/Processor/Resources/Pd.php – drunken monkey
  • src/Plugin/SearchApi/Processor/Resources/Pe.php – drunken monkey
  • src/Plugin/SearchApi/Processor/Resources/Pf.php – drunken monkey
  • src/Plugin/SearchApi/Processor/Resources/Pi.php – drunken monkey
  • src/Plugin/SearchApi/Processor/Resources/Po.php – drunken monkey
  • src/Plugin/SearchApi/Processor/Resources/Ps.php – drunken monkey
  • src/Plugin/SearchApi/Processor/Resources/Sc.php – drunken monkey
  • src/Plugin/SearchApi/Processor/Resources/Sk.php – drunken monkey
  • src/Plugin/SearchApi/Processor/Resources/Sm.php – drunken monkey
  • src/Plugin/SearchApi/Processor/Resources/So.php – drunken monkey
  • src/Plugin/SearchApi/Processor/Resources/UnicodeListInterface.php – drunken monkey
  • src/Plugin/SearchApi/Processor/Resources/Zl.php – drunken monkey
  • src/Plugin/SearchApi/Processor/Resources/Zp.php – drunken monkey
  • src/Plugin/SearchApi/Processor/Resources/Zs.php – drunken monkey
  • src/Plugin/SearchApi/Processor/RoleFilter.php – drunken monkey – drunken monkey
  • src/Plugin/SearchApi/Processor/Stopwords.php – drunken monkey – drunken monkey
  • src/Plugin/SearchApi/Processor/Tokenizer.php – drunken monkey – drunken monkey
  • src/Plugin/SearchApi/Processor/Transliteration.php – drunken monkey
  • src/Plugin/SearchApi/Tracker/DefaultTracker.php – drunken monkey
  • src/Plugin/views/argument/SearchApiArgument.php – drunken monkey
  • src/Plugin/views/argument/SearchApiDate.php – drunken monkey
  • src/Plugin/views/argument/SearchApiFulltext.php – drunken monkey
  • src/Plugin/views/argument/SearchApiMoreLikeThis.php – drunken monkey
  • src/Plugin/views/argument/SearchApiString.php – drunken monkey
  • src/Plugin/views/argument/SearchApiTaxonomyTerm.php – drunken monkey
  • src/Plugin/views/cache/SearchApiCache.php – drunken monkey
  • src/Plugin/views/display/FacetsBlock.php – drunken monkey
  • src/Plugin/views/field/SearchApiExcerpt.php – drunken monkey
  • src/Plugin/views/filter/SearchApiFilter.php – drunken monkey
  • src/Plugin/views/filter/SearchApiFilterBoolean.php – drunken monkey
  • src/Plugin/views/filter/SearchApiFilterDate.php – drunken monkey
  • src/Plugin/views/filter/SearchApiFilterEntityBase.php – drunken monkey
  • src/Plugin/views/filter/SearchApiFilterOptions.php – drunken monkey
  • src/Plugin/views/filter/SearchApiFilterText.php – drunken monkey
  • src/Plugin/views/filter/SearchApiFulltext.php – drunken monkey
  • src/Plugin/views/filter/SearchApiLanguage.php – drunken monkey
  • src/Plugin/views/filter/SearchApiTerm.php – drunken monkey
  • src/Plugin/views/filter/SearchApiUser.php – drunken monkey
  • src/Plugin/views/query/SearchApiQuery.php – drunken monkey
  • src/Plugin/views/row/SearchApiRow.php – drunken monkey
  • src/Plugin/views/sort/SearchApiSort.php – drunken monkey
  • src/Processor/FieldsProcessorPluginBase.php – drunken monkey
  • src/Processor/ProcessorInterface.php – drunken monkey
  • src/Processor/ProcessorPluginBase.php – drunken monkey
  • src/Processor/ProcessorPluginManager.php – drunken monkey
  • src/Query/Filter.php – drunken monkey
  • src/Query/FilterInterface.php – drunken monkey
  • src/Query/Query.php – drunken monkey
  • src/Query/QueryInterface.php – drunken monkey
  • src/Query/ResultSet.php – drunken monkey
  • src/Query/ResultSetInterface.php – drunken monkey
  • src/Server/ServerInterface.php – drunken monkey
  • src/Session/SearchApiUserSession.php – drunken monkey
  • src/Task/ServerTaskManager.php – drunken monkey
  • src/Task/ServerTaskManagerInterface.php – drunken monkey
  • src/Tests/ExampleContentTrait.php – drunken monkey
  • src/Tests/IndexStorageUnitTest.php – drunken monkey
  • src/Tests/IntegrationTest.php – drunken monkey
  • src/Tests/LanguageIntegrationUnitTest.php – drunken monkey
  • src/Tests/LocalActionsWebTest.php – drunken monkey
  • src/Tests/OverviewPageTest.php – drunken monkey
  • src/Tests/Processor/ContentAccessTest.php – drunken monkey
  • src/Tests/Processor/ProcessorTestBase.php – drunken monkey
  • src/Tests/Processor/RenderedItemTest.php – drunken monkey
  • src/Tests/Processor/TestItemsTrait.php – drunken monkey
  • src/Tests/SearchApiServerTaskUnitTest.php – drunken monkey
  • src/Tests/SearchApiWebTestBase.php – drunken monkey
  • src/Tests/ServerStorageUnitTest.php – drunken monkey
  • src/Tests/ViewsTest.php – drunken monkey
  • src/Tracker/TrackerInterface.php – drunken monkey
  • src/Tracker/TrackerPluginBase.php – drunken monkey
  • src/Tracker/TrackerPluginManager.php – drunken monkey
  • src/Utility/Utility.php – drunken monkey
  • tests/modules/search_api_test_backend/search_api_test_backend.info.yml – drunken monkey
  • tests/modules/search_api_test_backend/search_api_test_backend.module – drunken monkey
  • tests/modules/search_api_test_backend/src/Plugin/SearchApi/Backend/TestBackend.php – drunken monkey
  • tests/modules/search_api_test_views/config/install/views.view.search_api_test_views_fulltext.yml – drunken monkey
  • tests/modules/search_api_test_views/search_api_test_views.info.yml – drunken monkey
  • tests/src/Menu/LocalActionsTest.php – drunken monkey
  • tests/src/Menu/LocalTasksTest.php – drunken monkey
  • tests/src/Plugin/Processor/AddURLTest.php – drunken monkey
  • tests/src/Plugin/Processor/AggregatedFieldTest.php – drunken monkey
  • tests/src/Plugin/Processor/FieldsProcessorPluginBaseTest.php – drunken monkey
  • tests/src/Plugin/Processor/HighlightTest.php – drunken monkey
  • tests/src/Plugin/Processor/HtmlFilterTest.php – drunken monkey
  • tests/src/Plugin/Processor/IgnoreCaseTest.php – drunken monkey
  • tests/src/Plugin/Processor/IgnoreCharacterTest.php – drunken monkey
  • tests/src/Plugin/Processor/LanguageTest.php – drunken monkey
  • tests/src/Plugin/Processor/NodeStatusTest.php – drunken monkey
  • tests/src/Plugin/Processor/ProcessorTestTrait.php – drunken monkey
  • tests/src/Plugin/Processor/RoleFilterTest.php – drunken monkey
  • tests/src/Plugin/Processor/StopwordsTest.php – drunken monkey
  • tests/src/Plugin/Processor/TestFieldsProcessorPlugin.php – drunken monkey
  • tests/src/Plugin/Processor/TokenizerTest.php – drunken monkey
  • tests/src/Plugin/Processor/TransliterationTest.php – drunken monkey
  • tests/src/TestComplexDataInterface.php – drunken monkey
  • tests/src/TestContentEntityInterface.php – drunken monkey
  • tests/src/TestNodeInterface.php – drunken monkey
  • tests/src/TestUserInterface.php – drunken monkey

For YAML files, we probably only need to ensure that everything is properly documented. And, specifically for services.yml, that the services are in alphabetical order.


Original report by drunken monkey:

Currently, due to about 15 different people having worked on it (with little supervision/review of changes), the adherence to Drupal's coding standards varies wildly throughout the project. Some parts are more or less OK, some need a lot of work in that regard.
I have always tried to keep as closely as possible to the coding standards and would like to take the chance with the new version to start from a "clean slate", with a module completely adhering to them. (The D7 version currently doesn't fulfill this due to various changes to the standards themselves.) A complete clean-up of the module in this regard is therefore definitely something that needs to happen before (or, rather, when) I transfer this sandbox back to the canonic Search API project.
(While doing this, we should also make sure that all hooks we are defining are properly documented, and that all documented hooks are really still used (in that form).)

When that time comes, I'd of course be glad about any help I can get. (This is also something that can be very well split up, because you can just check and clean up a file completely separately from the others.)
But until then, everyone can also already help by checking up on the latest version of the standards and (even more important, since more often overlooked) the documentation standards and keeping to them as closely as possible when working on the module.
Cleaning the code up now is probably not a good idea, though, since it might cause too many conflicts. Therefore, please also refrain from making code cleanup changes in unrelated parts of the code (except whitespace, which is hard to control in most editors and can be really annoying).

Also, here's a link to the current PAReview of the sandbox, to show the kinds of errors we have at the moment. Ideally, this would be more or less empty when moving the code back to the Search API project.

Comments

Nick_vh’s picture

Going to spend 15 minutes on this now

Nick_vh’s picture

Changed all line endings to linux format and added a README.txt file.

Fixed:

PHP Parse error: syntax error, unexpected '[', expecting ')' in ./lib/Drupal/search_api/Form/IndexFiltersForm.php on line 123
Errors parsing ./lib/Drupal/search_api/Form/IndexFiltersForm.php

And

182 | WARNING | Variable $entity_description_added is undefined.
223 | WARNING | Unused variable $additional_form_options.
224 | WARNING | Unused variable $additional_form_default_values.

drunken monkey’s picture

One very commonly overlooked rule, e.g., is this:

For most functions (see exceptions below), summary lines must start with a third person singular present tense verb, and they must explain what the function does. Example: "Calculates the maximum weight for a list."

The same goes for files, classes and interfaces.

@ Nick: How do you want to spend that time? As said, I think it would lead to too many conflicts if we start a large clean up action at this point. Better later, and properly organized (with everyone who wants to help marking the files they'll work on), so people will know to expect it.

Nick_vh’s picture

My time's up :) And I reported what I've done

drunken monkey’s picture

PHP Parse error: syntax error, unexpected '[', expecting ')' in ./lib/Drupal/search_api/Form/IndexFiltersForm.php on line 123

That was nothing to fix, that was just PAReview using an old PHP version. That was why I said the list should be "more or less empty" – there are just a few false positives in there.

Nick_vh’s picture

Well, it's not really a good practice to use a value from an array in an object directly. Unless you know for sure the value will be there of course. Anyway, feel free to revert that one change, that was a really minor thing.

drunken monkey’s picture

Another thing we could do, while we're at it, is sorting the methods in classes to reflect the order of methods in the interface. I think this would help make things a bit clearer.

Berdir’s picture

We discussed today that it would be nice to add phpcs to travis, see http://dazz.github.io/2013/07/14/add-phpmd-and-phpcs-to-environments/ for example, you'd also need to add the Drupal coding standard from the coder_sniffer module.

drunken monkey’s picture

What about the PAReview script, might be an idea, too?

The problem in both cases, though, would probably be that we'd get such a ton of errors at the moment that it would be more or less useless. You'd have to manually check if your commit increased or decreased the amount of warnings …
But I guess it could still be useful.

Nick_vh’s picture

https://travis-ci.org/nickveenhof/search-api-sandbox/jobs/23193019 is a run with php codesniffer. The test won't report it failed but you can always check the output of codesniffer in those builds. It's indeed more informative. How would one run the PAReview script and what would it add next to the codesniffer default?

drunken monkey’s picture

How it's run is explained here, it's very simple. But I guess there's little additional value, compared to the codesniffer. It would probably suffice to run this when we get to the "move back to Search API project" step.

Nick_vh’s picture

Issue tags: +low hanging fruit

I'm not sure if pareview is already adjusted to the Drupal 8 modules? If it is, it doesn't hurt to run it. Agreeing here that that can wait.

Looking at it, it looks way more complete than just codesniffer. Perhaps we can simulate it using the clean methods such as adding https://drupal.org/project/drupalpractice to the codesniffer templates and running that also.

drunken monkey’s picture

Issue summary: View changes

While doing this, we should also make sure that all hooks we are defining are properly documented, and that all documented hooks are really still used (in that form).

  • Commit 16ac7de on master, 2230931--multiple_datasources, search_api_db, views, local-tasks by Nick_vh:
    #2242361 | Coding standards clean up - Take 1
    

  • Commit 16ac7de on master, 2230931--multiple_datasources, search_api_db, views, local-tasks, 2253237-search-result-class by Nick_vh:
    #2242361 | Coding standards clean up - Take 1
    

  • Commit 16ac7de on master, 2230931--multiple_datasources, search_api_db, views, local-tasks, 2253237-search-result-class, 2241429--language_support by Nick_vh:
    #2242361 | Coding standards clean up - Take 1
    

  • Commit 16ac7de on master, views, 2253237-search-result-class, 2241429--language_support, htmlfilter by Nick_vh:
    #2242361 | Coding standards clean up - Take 1
    
drunken monkey’s picture

Component: Backend » Framework

Just browsed a bit through core issues and created two for this module that we might want to implement also during the "back to its home repository" move:
#2268809: Use short array syntax in module
#2268823: Use t() methods instead of global function
Comments welcome. ;)

drunken monkey’s picture

Issue summary: View changes

Also, preparing the OP for organizing the work once we start it. (Please don't start yet, there's still a few issues to solve first.)

drunken monkey’s picture

Issue summary: View changes
drunken monkey’s picture

Issue summary: View changes

Added: Pass $e as the third parameter when wrapping an exception into a SearchApiException.

drunken monkey’s picture

Issue summary: View changes

Added note about inline comments.

drunken monkey’s picture

Issue summary: View changes

Inline comments should also (like all other comments) form complete sentences and end with a period.

drunken monkey’s picture

Issue summary: View changes

Always use interfaces, not classes, for type hinting (also in doc comments!).

  • Commit aa38879 on master by amateescu:
    Issue #2242361: Coding standards - Pass $e as the third parameter when...

  • Commit aa38879 on master, 2253237-search-result-class by amateescu:
    Issue #2242361: Coding standards - Pass $e as the third parameter when...

  • Commit aa38879 on master, htmlfilter, 2253237-search-result-class by amateescu:
    Issue #2242361: Coding standards - Pass $e as the third parameter when...

  • Commit 16ac7de on master, views, 2241429--language_support, htmlfilter, 2235381-fix-config-schemas by Nick_vh:
    #2242361 | Coding standards clean up - Take 1
    
  • Commit aa38879 on master, htmlfilter, 2253237-search-result-class, 2235381-fix-config-schemas by amateescu:
    Issue #2242361: Coding standards - Pass $e as the third parameter when...

  • Commit 16ac7de on master, views, 2241429--language_support, htmlfilter, 2235381-fix-config-schemas, move-integration-tests-subfolder by Nick_vh:
    #2242361 | Coding standards clean up - Take 1
    
  • Commit aa38879 on master, htmlfilter, 2253237-search-result-class, 2235381-fix-config-schemas, move-integration-tests-subfolder by amateescu:
    Issue #2242361: Coding standards - Pass $e as the third parameter when...

  • Commit 16ac7de on master, views, 2241429--language_support, htmlfilter, 2235381-fix-config-schemas, move-integration-tests-subfolder, 2230881-test-all-processors by Nick_vh:
    #2242361 | Coding standards clean up - Take 1
    
  • Commit aa38879 on master, htmlfilter, 2253237-search-result-class, 2235381-fix-config-schemas, move-integration-tests-subfolder, 2230881-test-all-processors by amateescu:
    Issue #2242361: Coding standards - Pass $e as the third parameter when...
drunken monkey’s picture

Issue summary: View changes

Added a few more hints for type documentation.

  • Commit 16ac7de on master, views, 2241429--language_support, htmlfilter, 2235381-fix-config-schemas, move-integration-tests-subfolder, issue-2273743 by Nick_vh:
    #2242361 | Coding standards clean up - Take 1
    
  • Commit aa38879 on master, htmlfilter, 2253237-search-result-class, 2235381-fix-config-schemas, move-integration-tests-subfolder, issue-2273743 by amateescu:
    Issue #2242361: Coding standards - Pass $e as the third parameter when...

  • Commit 16ac7de on master, views, 2241429--language_support, htmlfilter, 2235381-fix-config-schemas, move-integration-tests-subfolder, issue-2273743, 2268885-fix-validation by Nick_vh:
    #2242361 | Coding standards clean up - Take 1
    
  • Commit aa38879 on master, htmlfilter, 2253237-search-result-class, 2235381-fix-config-schemas, move-integration-tests-subfolder, issue-2273743, 2268885-fix-validation by amateescu:
    Issue #2242361: Coding standards - Pass $e as the third parameter when...
drunken monkey’s picture

Issue summary: View changes

What do you all think about #2055851: Remove translation of exception messages? Should we also not translate our error messages? Core right now is a huge mess in that respect – so maybe we should just wait for a decision there?
In my opinion, not translating exception messages makes a lot of sense – the most compelling reason being that untranslated error messages are much easier to google. But probably waiting for a decision in core makes most sense (if it's realisitic there'll be one, which I hope).

drunken monkey’s picture

Issue summary: View changes

Not really code style, but still good to fix here: in PHPUnit test cases' assertEquals() calls, the expected value should come first, then the actual value. Only that way the output in case of a fail is correct. (For Drupal tests, I don't think it matters.)

amateescu’s picture

Re #34: I'm huge +1 on not translating them :)

  • Commit 16ac7de on master, views, 2241429--language_support, htmlfilter, 2235381-fix-config-schemas, move-integration-tests-subfolder, issue-2273743, 2268885-fix-validation, synonyms-processor, 2230925-server-tasks by Nick_vh:
    #2242361 | Coding standards clean up - Take 1
    

  • Commit aa38879 on master, htmlfilter, 2253237-search-result-class, 2235381-fix-config-schemas, move-integration-tests-subfolder, issue-2273743, 2268885-fix-validation, synonyms-processor, 2230925-server-tasks by amateescu:
    Issue #2242361: Coding standards - Pass $e as the third parameter when...

  • Commit 16ac7de on master, views, 2241429--language_support, htmlfilter, 2235381-fix-config-schemas, move-integration-tests-subfolder, issue-2273743, 2268885-fix-validation, synonyms-processor, 2230925-server-tasks, 2235381-fix-config-schemas-2 by Nick_vh:
    #2242361 | Coding standards clean up - Take 1
    
  • Commit aa38879 on master, htmlfilter, 2253237-search-result-class, 2235381-fix-config-schemas, move-integration-tests-subfolder, issue-2273743, 2268885-fix-validation, synonyms-processor, 2230925-server-tasks, 2235381-fix-config-schemas-2 by amateescu:
    Issue #2242361: Coding standards - Pass $e as the third parameter when...

  • Commit 16ac7de on master, views, 2241429--language_support, htmlfilter, move-integration-tests-subfolder, issue-2273743, 2268885-fix-validation, synonyms-processor, 2230925-server-tasks, 2235381-fix-config-schemas-2, 2257113-Index-Processors-Fields by Nick_vh:
    #2242361 | Coding standards clean up - Take 1
    
  • Commit aa38879 on master, htmlfilter, 2253237-search-result-class, move-integration-tests-subfolder, issue-2273743, 2268885-fix-validation, synonyms-processor, 2230925-server-tasks, 2235381-fix-config-schemas-2, 2257113-Index-Processors-Fields by amateescu:
    Issue #2242361: Coding standards - Pass $e as the third parameter when...

  • Commit 16ac7de on master, views, 2241429--language_support, htmlfilter, move-integration-tests-subfolder, issue-2273743, 2268885-fix-validation, synonyms-processor, 2230925-server-tasks, 2235381-fix-config-schemas-2, 2257113-Index-Processors-Fields by Nick_vh:
    #2242361 | Coding standards clean up - Take 1
    
  • Commit aa38879 on master, htmlfilter, 2253237-search-result-class, move-integration-tests-subfolder, issue-2273743, 2268885-fix-validation, synonyms-processor, 2230925-server-tasks, 2235381-fix-config-schemas-2, 2257113-Index-Processors-Fields by amateescu:
    Issue #2242361: Coding standards - Pass $e as the third parameter when...

  • Commit 16ac7de on master, views, 2241429--language_support, htmlfilter, move-integration-tests-subfolder, issue-2273743, 2268885-fix-validation, synonyms-processor, 2230925-server-tasks, 2235381-fix-config-schemas-2, 2257113-Index-Processors-Fields, config-schema by Nick_vh:
    #2242361 | Coding standards clean up - Take 1
    
  • Commit aa38879 on master, htmlfilter, 2253237-search-result-class, move-integration-tests-subfolder, issue-2273743, 2268885-fix-validation, synonyms-processor, 2230925-server-tasks, 2235381-fix-config-schemas-2, 2257113-Index-Processors-Fields, config-schema by amateescu:
    Issue #2242361: Coding standards - Pass $e as the third parameter when...
drunken monkey’s picture

Issue summary: View changes

According to Bram and Andrei, we should use $entity_class::create() instead of entity_create(), to get proper code completion/type hinting.

  • Commit 16ac7de on master, views, 2241429--language_support, htmlfilter, move-integration-tests-subfolder, issue-2273743, 2268885-fix-validation, synonyms-processor, 2230925-server-tasks, 2235381-fix-config-schemas-2, 2257113-Index-Processors-Fields, config-schema, transliteration by Nick_vh:
    #2242361 | Coding standards clean up - Take 1
    
  • Commit aa38879 on master, htmlfilter, 2253237-search-result-class, move-integration-tests-subfolder, issue-2273743, 2268885-fix-validation, synonyms-processor, 2230925-server-tasks, 2235381-fix-config-schemas-2, 2257113-Index-Processors-Fields, config-schema, transliteration by amateescu:
    Issue #2242361: Coding standards - Pass $e as the third parameter when...

  • Commit 16ac7de on master, views, 2241429--language_support, htmlfilter, move-integration-tests-subfolder, issue-2273743, 2268885-fix-validation, synonyms-processor, 2230925-server-tasks, 2235381-fix-config-schemas-2, 2257113-Index-Processors-Fields, config-schema, transliteration, ignore-case-test-fix by Nick_vh:
    #2242361 | Coding standards clean up - Take 1
    
  • Commit aa38879 on master, htmlfilter, 2253237-search-result-class, move-integration-tests-subfolder, issue-2273743, 2268885-fix-validation, synonyms-processor, 2230925-server-tasks, 2235381-fix-config-schemas-2, 2257113-Index-Processors-Fields, config-schema, transliteration, ignore-case-test-fix by amateescu:
    Issue #2242361: Coding standards - Pass $e as the third parameter when...

  • Commit 16ac7de on master, views, 2241429--language_support, htmlfilter, move-integration-tests-subfolder, issue-2273743, 2268885-fix-validation, synonyms-processor, 2230925-server-tasks, 2235381-fix-config-schemas-2, 2257113-Index-Processors-Fields, config-schema, transliteration, ignore-case-test-fix, 2281233-fix-stopwords by Nick_vh:
    #2242361 | Coding standards clean up - Take 1
    
  • Commit aa38879 on master, htmlfilter, 2253237-search-result-class, move-integration-tests-subfolder, issue-2273743, 2268885-fix-validation, synonyms-processor, 2230925-server-tasks, 2235381-fix-config-schemas-2, 2257113-Index-Processors-Fields, config-schema, transliteration, ignore-case-test-fix, 2281233-fix-stopwords by amateescu:
    Issue #2242361: Coding standards - Pass $e as the third parameter when...

  • Commit 16ac7de on master, views, 2241429--language_support, htmlfilter, move-integration-tests-subfolder, issue-2273743, 2268885-fix-validation, synonyms-processor, 2230925-server-tasks, 2235381-fix-config-schemas-2, 2257113-Index-Processors-Fields, config-schema, transliteration, ignore-case-test-fix, 2281233-fix-stopwords, ignorecase-nick, renamefields by Nick_vh:
    #2242361 | Coding standards clean up - Take 1
    
  • Commit aa38879 on master, htmlfilter, 2253237-search-result-class, move-integration-tests-subfolder, issue-2273743, 2268885-fix-validation, synonyms-processor, 2230925-server-tasks, 2235381-fix-config-schemas-2, 2257113-Index-Processors-Fields, config-schema, transliteration, ignore-case-test-fix, 2281233-fix-stopwords, ignorecase-nick, renamefields by amateescu:
    Issue #2242361: Coding standards - Pass $e as the third parameter when...

  • Commit 16ac7de on master, views, 2241429--language_support, htmlfilter, move-integration-tests-subfolder, issue-2273743, 2268885-fix-validation, synonyms-processor, 2230925-server-tasks, 2235381-fix-config-schemas-2, 2257113-Index-Processors-Fields, config-schema, transliteration, ignore-case-test-fix, 2281233-fix-stopwords, ignorecase-nick, renamefields by Nick_vh:
    #2242361 | Coding standards clean up - Take 1
    
  • Commit aa38879 on master, htmlfilter, 2253237-search-result-class, move-integration-tests-subfolder, issue-2273743, 2268885-fix-validation, synonyms-processor, 2230925-server-tasks, 2235381-fix-config-schemas-2, 2257113-Index-Processors-Fields, config-schema, transliteration, ignore-case-test-fix, 2281233-fix-stopwords, ignorecase-nick, renamefields by amateescu:
    Issue #2242361: Coding standards - Pass $e as the third parameter when...

  • Commit 16ac7de on master, views, htmlfilter, issue-2273743, 2268885-fix-validation, synonyms-processor, 2235381-fix-config-schemas-2, config-schema, transliteration, ignore-case-test-fix, ignorecase-nick, renamefields, highlight by Nick_vh:
    #2242361 | Coding standards clean up - Take 1
    
  • Commit aa38879 on master, htmlfilter, 2253237-search-result-class, issue-2273743, 2268885-fix-validation, synonyms-processor, 2235381-fix-config-schemas-2, config-schema, transliteration, ignore-case-test-fix, ignorecase-nick, renamefields, highlight by amateescu:
    Issue #2242361: Coding standards - Pass $e as the third parameter when...

  • Commit 16ac7de on master, views, htmlfilter, issue-2273743, 2268885-fix-validation, synonyms-processor, 2235381-fix-config-schemas-2, config-schema, transliteration, ignore-case-test-fix, ignorecase-nick, renamefields, highlight, add-aggregation-nick by Nick_vh:
    #2242361 | Coding standards clean up - Take 1
    
  • Commit aa38879 on master, htmlfilter, 2253237-search-result-class, issue-2273743, 2268885-fix-validation, synonyms-processor, 2235381-fix-config-schemas-2, config-schema, transliteration, ignore-case-test-fix, ignorecase-nick, renamefields, highlight, add-aggregation-nick by amateescu:
    Issue #2242361: Coding standards - Pass $e as the third parameter when...

  • Commit 16ac7de on master, views, htmlfilter, issue-2273743, 2268885-fix-validation, synonyms-processor, 2235381-fix-config-schemas-2, config-schema, transliteration, ignore-case-test-fix, ignorecase-nick, renamefields, highlight, add-aggregation-nick, 2247923-Test_the_RenderedItem_processor by Nick_vh:
    #2242361 | Coding standards clean up - Take 1
    
  • Commit aa38879 on master, htmlfilter, 2253237-search-result-class, issue-2273743, 2268885-fix-validation, synonyms-processor, 2235381-fix-config-schemas-2, config-schema, transliteration, ignore-case-test-fix, ignorecase-nick, renamefields, highlight, add-aggregation-nick, 2247923-Test_the_RenderedItem_processor by amateescu:
    Issue #2242361: Coding standards - Pass $e as the third parameter when...

  • Commit 16ac7de on master, views, htmlfilter, issue-2273743, 2268885-fix-validation, synonyms-processor, 2235381-fix-config-schemas-2, config-schema, transliteration, ignore-case-test-fix, ignorecase-nick, renamefields, highlight, add-aggregation-nick, 2247923-Test_the_RenderedItem_processor, 2286813-fields-processor-plugin-base-test by Nick_vh:
    #2242361 | Coding standards clean up - Take 1
    
  • Commit aa38879 on master, htmlfilter, 2253237-search-result-class, issue-2273743, 2268885-fix-validation, synonyms-processor, 2235381-fix-config-schemas-2, config-schema, transliteration, ignore-case-test-fix, ignorecase-nick, renamefields, highlight, add-aggregation-nick, 2247923-Test_the_RenderedItem_processor, 2286813-fields-processor-plugin-base-test by amateescu:
    Issue #2242361: Coding standards - Pass $e as the third parameter when...
drunken monkey’s picture

Status: Postponed » Active

We agreed on opening this up now, so feel free to start cracking! ;)
Just please mark the files you're working on.

drunken monkey’s picture

Issue summary: View changes

Updated file name ContentEntityDatasourceDeriver.php according to #2297921: Cannot access create index page after D8 core commit 41576e1.

  • Nick_vh committed 16ac7de on add_aggregatedfield_test
    #2242361 | Coding standards clean up - Take 1
    
  • amateescu committed aa38879 on add_aggregatedfield_test
    Issue #2242361: Coding standards - Pass $e as the third parameter when...
drunken monkey’s picture

Issue summary: View changes

Updated the list of files – all other blockers for the move back to the "home" repository are now gone, we can finally properly start here.

drunken monkey’s picture

Issue summary: View changes

Working on the following files now:

  • config/install/search_api.settings.yml
  • config/schema/search_api.datasource.schema.yml
  • config/schema/search_api.index.schema.yml
  • config/schema/search_api.processor.schema.yml
  • config/schema/search_api.schema.yml
  • config/schema/search_api.server.schema.yml
  • css/search_api.admin.css
  • js/index-active-formatters.js
  • search_api.api.php
  • search_api.drush.inc
  • search_api.info.yml
drunken monkey’s picture

Issue summary: View changes

Since I spotted some bugs in the following files, I'm gonna clean those up, too:

  • src/Form/IndexFiltersForm.php
  • src/Plugin/SearchApi/Processor/RoleFilter.php
  • src/Plugin/SearchApi/Processor/Stopwords.php
  • src/Plugin/SearchApi/Processor/Tokenizer.php
  • src/Tests/LanguageIntegrationUnitTest.php
  • tests/src/Plugin/Processor/TokenizerTest.php

It would probably be helpful if people working on other issues could also mark their files here (and later either put them back in or do a cleanup on them), so there are no/less conflicts.

drunken monkey’s picture

Any opinions on the naming convention for unit test data providers? Core just has a complete laissez-faire attitude there, with (out of 599):

  1. 251 * get*()
  2. 192 * provider*() (in 149 cases followed by the capitalized name of the test method)
  3. 110 * *Provider() (including 8 * get*Provider())
  4. 27 * provide*()

From those, I personally like (2) best, since it already contains the complete name of the test method and thereby eliminates any unclarities. On the other hand, of course, starting a method name with a noun is really ugly (even though it (shockingly, I find) doesn't seem to violate the coding standards).
Any thoughts?

Also, should test methods (at least in unit tests) contain the tested method in their names, or just describe what is tested (e.g., testProcessFieldValueWithoutCjk() vs. testPreprocessingWithoutCjk())?

drunken monkey’s picture

Issue summary: View changes

Working on the following files now:

  • search_api.install
  • search_api.libraries.yml
  • search_api.links.action.yml
  • search_api.links.menu.yml
  • search_api.links.task.yml
  • search_api.module
  • search_api.routing.yml
  • search_api.services.yml
Nick_vh’s picture

If number 2 is what you like most I think we should go for that one. I don't feel strongly either way. The one thing that could be confusing if we use number two is that there is likely to be a dataset that can be used for multiple unit tests? So then having the function name in the provider isn't good.

Test methods should just describe what exactly is tested. That said, I do like the example: "testProcessFieldValueWithoutCjk". It leaves less room for improvisation and thus enhances the clarity of the complete test suite.

drunken monkey’s picture

Issue summary: View changes

Hm, they are actually working on a standard in #2057905: [policy, no patch] Discuss the standards for phpunit based tests, so maybe we can just wait for that.
They don't seem to specify in more detail how test methods should be named, though.

Done with the first two batches, but didn't form the commit message like normally, so this issue wouldn't be (even more) flooded.
Working on the following files now:

  • search_api.theme.inc
  • search_api.views.inc
  • search_api_db/config/install/search_api_db.settings.yml
  • search_api_db/config/schema/search_api_db.backend.schema.yml
  • search_api_db/config/schema/search_api_db.schema.yml
  • search_api_db/search_api_db.info.yml
drunken monkey’s picture

Issue summary: View changes

Working on the following files now:

  • search_api_db/src/Plugin/SearchApi/Backend/SearchApiDbBackend.php
  • search_api_db/src/Tests/SearchApiDbTest.php
  • search_api_db/tests/modules/search_api_test_db/config/install/field.field.entity_test.body.yml
  • search_api_db/tests/modules/search_api_test_db/config/install/field.field.entity_test.keywords.yml
  • search_api_db/tests/modules/search_api_test_db/config/install/field.instance.entity_test.article.body.yml
  • search_api_db/tests/modules/search_api_test_db/config/install/field.instance.entity_test.article.keywords.yml
  • search_api_db/tests/modules/search_api_test_db/config/install/field.instance.entity_test.item.body.yml
  • search_api_db/tests/modules/search_api_test_db/config/install/field.instance.entity_test.item.keywords.yml
  • search_api_db/tests/modules/search_api_test_db/config/install/search_api.index.database_search_index.yml
  • search_api_db/tests/modules/search_api_test_db/config/install/search_api.server.database_search_server.yml
  • search_api_db/tests/modules/search_api_test_db/search_api_test_db.info.yml

  • drunken monkey committed f5f2887 on master
    Issue #2242361 by drunken monkey: Cleaned up (and sorted) imports.
    
  • drunken monkey committed fbc18f9 on master
    Issue #2242361 by drunken monkey: Code cleanup: fourth batch.
    
drunken monkey’s picture

Issue summary: View changes

After the interruption caused by #2225353: Convert $form_state to an object and provide methods like setError(), I'm working on the following files now:

  • src/Annotation/SearchApiBackend.php
  • src/Annotation/SearchApiDatasource.php
  • src/Annotation/SearchApiProcessor.php
  • src/Annotation/SearchApiTracker.php
  • src/Backend/BackendInterface.php
  • src/Backend/BackendPluginBase.php
  • src/Backend/BackendPluginManager.php
  • src/Backend/BackendSpecificInterface.php
  • src/Batch/IndexBatchHelper.php
  • src/Controller/SearchApiIndexController.php
  • src/Controller/SearchApiServerController.php

drunken monkey’s picture

Issue summary: View changes

(Yes, typo in commit message, it was of course the fifth batch already.)

Working on the following files now:

  • src/Datasource/DatasourceInterface.php
  • src/Datasource/DatasourcePluginBase.php
  • src/Datasource/DatasourcePluginManager.php
  • src/Entity/Index.php
  • src/Entity/Server.php
  • src/Exception/SearchApiException.php

  • drunken monkey committed ae253b1 on master
    Issue #2242361 by drunken monkey: Code cleanup, sixth batch.
    
  • drunken monkey committed f057153 on master
    Issue #2242361 by drunken monkey: Unified __construct() method...
drunken monkey’s picture

Issue summary: View changes

Working on the following files now:

  • src/Form/IndexClearConfirmForm.php
  • src/Form/IndexDeleteConfirmForm.php
  • src/Form/IndexDisableConfirmForm.php
  • src/Form/IndexFieldsForm.php
  • src/Form/IndexForm.php
  • src/Form/IndexReindexConfirmForm.php
  • src/Form/IndexStatusForm.php
  • src/Form/ServerClearConfirmForm.php
  • src/Form/ServerDeleteConfirmForm.php
  • src/Form/ServerDisableConfirmForm.php
  • src/Form/ServerForm.php
  • src/Form/ServerStatusForm.php

  • drunken monkey committed 968af13 on master
    Issue #2242361 by drunken monkey: Code cleanup, seventh batch.
    
drunken monkey’s picture

Issue summary: View changes

Working on the following files now:

  • src/Index/IndexInterface.php
  • src/IndexListBuilder.php
  • src/Item/AdditionalFieldInterface.php
  • src/Item/AdditionalField.php
  • src/Item/FieldInterface.php
  • src/Item/Field.php
  • src/Item/FieldTrait.php
  • src/Item/GenericFieldInterface.php
  • src/Item/ItemInterface.php
  • src/Item/Item.php
  • src/Plugin/ConfigurablePluginBase.php
  • src/Plugin/ConfigurablePluginInterface.php
  • src/Plugin/IndexPluginBase.php
  • src/Plugin/IndexPluginInterface.php

Let's see, maybe this will be complete before Amsterdam.

  • drunken monkey committed e46c0ee on master
    Issue #2242361 by drunken monkey: Code cleanup, eighth batch.
    
drunken monkey’s picture

Issue summary: View changes

Claiming all processors and the datasource plugin (with its deriver).

  • drunken monkey committed b667dc4 on master
    Issue #2242361 by drunken monkey: Code cleanup, ninth batch.
    

  • drunken monkey committed 53bf52f on master
    Issue #2242361 by drunken monkey: Code cleanup, tenth batch.
    
drunken monkey’s picture

Issue summary: View changes

Claiming the rest of src/Plugin/.

  • drunken monkey committed bfe9227 on master
    Issue #2242361 by drunken monkey: Code cleanup, eleventh batch.
    
drunken monkey’s picture

Issue summary: View changes

Claiming src/Processor/ and src/Query/.

  • drunken monkey committed 5980fc2 on master
    Issue #2242361 by drunken monkey: Code cleanup, twelfth batch.
    
drunken monkey’s picture

Issue summary: View changes

Claiming the rest of src/ (tests/ remaining).

  • Nick_vh committed 16ac7de on 2349435-seperate-processors-by-stage
    #2242361 | Coding standards clean up - Take 1
    
  • drunken monkey committed 53bf52f on 2349435-seperate-processors-by-stage
    Issue #2242361 by drunken monkey: Code cleanup, tenth batch.
    
  • drunken monkey committed 5980fc2 on 2349435-seperate-processors-by-stage
    Issue #2242361 by drunken monkey: Code cleanup, twelfth batch.
    
  • drunken monkey committed 968af13 on 2349435-seperate-processors-by-stage
    Issue #2242361 by drunken monkey: Code cleanup, seventh batch.
    
  • amateescu committed aa38879 on 2349435-seperate-processors-by-stage
    Issue #2242361: Coding standards - Pass $e as the third parameter when...
  • drunken monkey committed ae253b1 on 2349435-seperate-processors-by-stage
    Issue #2242361 by drunken monkey: Code cleanup, sixth batch.
    
  • drunken monkey committed b667dc4 on 2349435-seperate-processors-by-stage
    Issue #2242361 by drunken monkey: Code cleanup, ninth batch.
    
  • drunken monkey committed bfe9227 on 2349435-seperate-processors-by-stage
    Issue #2242361 by drunken monkey: Code cleanup, eleventh batch.
    
  • drunken monkey committed c224228 on 2349435-seperate-processors-by-stage
    Issue #2242361 by drunken monkey: Code cleanup: fourth batch.
    
  • drunken monkey committed e46c0ee on 2349435-seperate-processors-by-stage
    Issue #2242361 by drunken monkey: Code cleanup, eighth batch.
    
  • drunken monkey committed f057153 on 2349435-seperate-processors-by-stage
    Issue #2242361 by drunken monkey: Unified __construct() method...
  • drunken monkey committed f5f2887 on 2349435-seperate-processors-by-stage
    Issue #2242361 by drunken monkey: Cleaned up (and sorted) imports.
    
  • drunken monkey committed fbc18f9 on 2349435-seperate-processors-by-stage
    Issue #2242361 by drunken monkey: Code cleanup: fourth batch.
    
drunken monkey’s picture

Issue summary: View changes

Claiming tests/, except for tests/src/Plugin.

drunken monkey’s picture

Issue summary: View changes

OK, that was a bit little. Anyways, claiming the rest.
Finally, almost done …

drunken monkey’s picture

Status: Active » Fixed

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.