The following rules apply to all developers who contribute source code to the Opencaching.de project.

General rules

All source code files must

  • not contain TAB characters,
  • use 4-char indenting columns,
  • be UTF-8 encoded without byte order marks,
  • use only LF as line ends, with the current exception of email templates, which have RFC-822 CR/LF line ends.

There are some tools in the local/devel directory for verifying and fixing these things.

PHP

All self-written or directly changed code must fully comply to the PSR-1 / PSR-2 standard, with these exceptions:

  • When referencing identifiers (e.g. class and function names) that are defined in non-PSR-2-compliant source code files, they need not be PSR-2 compliant.
  • When writing small standalone scripts like those in the 'local' and 'util' directories, they need not to comply to the PSR-1 "Side Effects" rule.

Only <?php and <?= open tags must be used. <? (short open tags) must not be used.

SQL

All SQL language identifiers are written in CAPS, and all user-defined identifiers in `backticks`. Inner joins are coded as JOIN and not as WHERE condition. All variable values inserted into SQLs must be escaped, either via &1 &2 &3 placeholders or via function sql_escape().

SQL statements embedded in PHP code are generally formatted like this:

   $result = sql(
       "SELECT `cache_id`, `wp_oc`
        FROM `caches`
        JOIN `cache_logs` ON `cache_logs`.`id` = `caches`.`id`
        WHERE `caches`.`staatus` IN ('&1', '&2')"
       $status1,
       $status2
   );