schemas/VegBIEN/VegBIEN data dictionary.xlsx: updated
schemas/public_.sql: analytical_stem_view: applied data dictionary renamings, using the steps at wiki.vegpath.org/VegBIEN_schema_refactoring#apply-data-dictionary-renamings-to-database
web/username_prefix.php: user2path(): comment prefixes: documented how to put the comment on a separate line when word-wrapping (c-_:x@url). this format works in Google spreadsheets.
web/username_prefix.php: user2path(): added support for comment prefixes, which can be used to include term categories. note: when URL is used without http:// , you must include a non-letter in the comment (eg. c_:x@url) to work in Firefox.
web/username_prefix.php: user2path(): visually separated steps for easier readability
fix: schemas/VegBIEN/VegBIEN data dictionary.xlsx: updated: restored "" that had been stripped out when the data was pasted in. set column widths to fit on a laptop screen.
added schemas/VegBIEN/VegBIEN data dictionary.xlsx
bugfix: web/username_prefix.php: user2path(): padding used to visually separate 1st element of URL: require all padding to be __ because sometimes terms contain a leading or trailing _
bugfix: web/username_prefix.php: user2path(): padding used to visually separate 1st element of URL: support embedded @ inside highlighted part: also need to match end-padding when followed by "."
web/username_prefix.php: user2path(): padding used to visually separate 1st element of URL: support embedded @ inside highlighted part
web/username_prefix.php: user2path(): added support for padding used to visually separate 1st element of URL (x@url -> x@url)
bugfix: web/username_prefix.php: need to handle : in login (which would normally indicate a password)
schemas/public_.sql: analytical_stem_view: example terms from each source: added location in the VegBIEN core DB
schemas/public_.sql: analytical_stem_view: terms in normalized schemas: put the source name right next to the term name (instead of after the table name) so it's easy to find
schemas/public_.sql: analytical_stem_view: VegX terms: populated definitions
schemas/public_.sql: analytical_stem_view: VegX terms: referenced to the specific table/subpath that they are in
bugfix: schemas/public_.sql: analytical_stem_view: locationName: re-sourced to VegX because this is actually not a DwC term
schemas/public_.sql: analytical_stem_view: populated definitions of linked DwC terms from DwC data dictionary
schemas/public_.sql: analytical_stem_view: renamed terms to link URLs, using the steps at wiki.vegpath.org/VegBIEN_schema_refactoring#data-dictionary-rename-terms-to-link-URLs
inputs/.TNRS/schema.sql: unsafe_taxon_names(): removed the name with "spp." now that this TNRS bug (https://pods.iplantcollaborative.org/jira/browse/TNRS-193) has been fixed
schemas/public_.sql: analytical_stem_view: populated links from unrenamed term names, using the steps at wiki.vegpath.org/VegBIEN_schema_refactoring#data-dictionary-populate-links-from-unrenamed-term-names
fix: schemas/public_.sql: analytical_stem_view: links: removed = before them because the link is in fact one member in a list of definitions (the = would apply to all definitions, not just the link, and since it apply to all definitions, it's redundant because of course the comment is what the column equals)
web/.htaccess: auto-detect dotpath: need to explicitly set usernames_disabled=1, because for some reason the `%{QUERY_STRING} =""` check doesn't detect a query string
web/.htaccess: auto-detect dotpath: removed handling of no longer used @ prefix (used to be used by username-based prefix subpaths)
bugfix: web/.htaccess: username-based prefix subpaths: usernames_disabled: also need to support it being set in the current round
bugfix: web/.htaccess: username-based prefix subpaths: removed support for query strings because these are often used at the root level, and should then be treated as a regular dotpath rather than something with a username-based prefix
bugfix: web/.htaccess: forced mod_autoindex listing: use $usernames_disabled to ensure that usernames stay disabled even when /all path is removed
bugfix: web/.htaccess: username-based prefix subpaths: added back usernames_disabled env var, because it is needed if a RewriteRule in a previous round creates an empty path (mod_rewrite runs the RewriteRules repeatedly until no replacements are made)
bugfix: web/.htaccess: username-based prefix subpaths: REDIRECT_REQUEST_URI: also allow it to be unset, as it is when using usernames
fix: web/index.php: directory index: don't append QUERY_STRING, as this is not used by /all
web/.htaccess: username-based prefix subpaths: removed usernames_disabled env var because the bug that appeared to require this has now been fixed
bugfix: web/.htaccess: username-based prefix subpaths: also need to check original URL (REDIRECT_REQUEST_URI), in addition to current URL (REQUEST_URI) to see if usernames should be disabled
web/.htaccess: username-based prefix subpaths: allow explicitly disabling in a RewriteRule to handle special cases
bugfix: web/index.php: directory index: use QUERY_STRING, not HTTP_AUTHORIZATION (HTTP_AUTHORIZATION was probably left over from a previous attempt to provide username-based prefix subpaths)
fix: schemas/public_.sql: analytical_stem_view: vegpath.org links: use ; instead of : between link and definition, because it makes more grammatical sense
schemas/public_.sql: analytical_stem_view: vegpath.org links: removed no longer needed // suffix
web/.htaccess, username_prefix.php: username-based prefix subpaths: don't require the // at the end , to avoid clutter. IMPORTANT: in order to access the home page after visiting a URL with a username, you must now append "." to the host ("vegpath.org.") (other pages are not affected by this problem). since vegpath.org is a URL shortener, this is a worthwhile tradeoff to avoid needing the // suffixes everywhere.
bugfix: web/.htaccess: subdomains: each path element must be non-empty, to avoid matching a trailing . incorrectly
web/.htaccess: username-based prefix subpaths: updated documentation to use leading // instead of trailing ? or ?@
web/username_prefix.php: $_SERVER["PHP_AUTH_USER"] test: factored $_SERVER["SCRIPT_URL"] out of both branches of if statement
web/username_prefix.php: don't remove @ from query string because that is no longer a special character
schemas/public_.sql: analytical_stem_view: added links and definitions for half a dozen of the terms from various sources
fix: web/.htaccess: username-based prefix subpaths: changed format to subpath@host//path because the trailing ? makes it look like the sentence the URL is in is a question
web/.phpPgAdmin/.htaccess: action redirect: only append ? if adding to the query string
inputs/publishable datasources.xlsx: updated
web/.phpPgAdmin/.htaccess: view: default to displaying the columns rather than the definition
schemas/public_.sql: analytical_stem_view: indicated provenance of the rest of the terms
schemas/public_.sql: analytical_stem_view: flagged the DwC terms
web/.phpPgAdmin/.htaccess: support viewing the columns of a view rather than the definition
web/.phpPgAdmin/.htaccess: RewriteRules: use overridable action var
web/.phpPgAdmin/.htaccess: support overriding action param in a later RewriteRule
web/.phpPgAdmin/.htaccess: removed skip= because this creates a confusing control flow, and prevents using chain
backups/TNRS.backup.md5: updated
schemas/public_.sql: added plot.**.modify()
inputs/.TNRS/schema.sql: *_modify(): removed the need to manually maintain copies of the dependent view definitions with the *s in place, because the *s are now added automatically by view_def_to_orig()
fix: schemas/util.sql: view_def_to_orig(): also need to merge .* expressions resulting from a SELECT * of a join, to avoid duplicated columns
fix: schemas/util.sql: view_def_to_orig(): require at least 6 cols to avoid false positives in the expansion match pattern
bugfix: schemas/util.sql: view_def_to_orig(): 1st col: can't prepend \y because it considers only \w chars, not "
bugfix: schemas/util.sql: view_def_to_orig(): don't match whitespace in the middle of a "" identifier, as this could throw off the parser
schemas/util.sql: eval(): restore user's intent by running util.view_def_to_orig() on the query to unexpand expanded * expressions
schemas/util.sql: pg_get_viewdef(): use util.view_def_to_orig()
schemas/util.sql: added view_def_to_orig()
fix: schemas/util.sql: pg_get_viewdef(): should be STABLE because it references system catalogs
schemas/util.sql: added pg_get_viewdef() wrapper, which unexpands expanded * expressions
lib/tnrs.py: max_names: raised back up to 500 now that a workaround for the Internal Server Errors is in place (https://github.com/iPlantCollaborativeOpenSource/TNRS/issues/7)
fix: schemas/public_.sql: tnrs_input_name: added ORDER BY to ensure a stable sort order. this also creates better query plans by enabling merge joins.
bugfix: schemas/public_.sql: tnrs_input_name: need to exclude unsafe taxon names as a workaround to #935 (TNRS crashes when scrubbing names with two infraspecific epithets)
schemas/public_.sql: taxonlabel: added index on taxonomicname to facilitate retrieving rows from tnrs_input_name
inputs/.TNRS/schema.sql: added taxon_name_is_safe()
inputs/.TNRS/schema.sql: added unsafe_taxon_names()
fix: lib/tnrs.py: max_names: lowered to 50 because the dev TNRS server is now always crashing with an Internal Server Error when scrubbing 500 names at a time (https://github.com/iPlantCollaborativeOpenSource/TNRS/issues/7)
web/.htaccess: auto-detect dotpath in query string: also auto-prepend & for query strings appended to a username-based prefix, so that these don't need to have & manually prepended to make them appendable
web/.htaccess: auto-detect dotpath in query string: also auto-detect dotpath for query strings appended to a username-based prefix, so that these don't need to have . prepended to make them appendable
web/username_prefix.php: no prefix: use $_SERVER["SCRIPT_URL"] instead of rtrimming $_SERVER["REQUEST_URI"]
web/username_prefix.php: has prefix: use same expr whether or not it has a query string, because the with-query-string expr works for both cases
web/username_prefix.php: use if statements instead of `? :` for clarity
web/username_prefix.php: use $subpath instead of $_SERVER["PHP_AUTH_USER"] for clarity
bugfix: **/.htaccess: redirects with fragment: qsappend does not support fragment, so append it separately
web/.htaccess, username_prefix.php: username-based prefix subpaths: support dotpath in query string (which will be appended verbatim to the prefix). use "__?@__" instead of "__?__&" to signal username-based prefix, so that the query string does not end in a dangling & .
bugfix: inputs/.TNRS/.htaccess: qsappend does not support fragment, so append it separately
bugfix: web/.htaccess: auto-detect dotpath in query string: don't exclude dotpaths that come before a normal query string (&k=v...)
web/.htaccess: auto-detect dotpath in query string: documented what each RewriteCond does
web/.htaccess: auto-detect dotpath in query string: use %{QUERY_STRING} instead of %0 for clarity
web/.htaccess, web/username_prefix.php: username-based prefix subpaths: support query strings in addition to paths
web/index.php: removed no longer needed redirection of username-based prefix subpaths, which is now handled by web/.htaccess
web/.htaccess: handle username-based prefix subpaths (of the form "subpath@url?") for all paths rather than just for the root (which were handled by index.php)
added web/username_prefix.php, for use with username-based prefix redirects
web/index.php: subpath@host? redirects: also support multiple @ and nested . in prefix: a@b.c@host? -> host?b.c.a
web/index.php: support prefix redirect of the form subpath@host? , which is better than subpath.host because case is preserved and special chars allowed. (must require trailing ? for redirect, to avoid needing login to view the page itself.)
bugfix: web/index.php: full directory index: appending query string: need to use $_SERVER["QUERY_STRING"], not $_SERVER["HTTP_AUTHORIZATION"] for this
schemas/public_.sql: sync_*(): renamed to *_modify() to facilitate finding these functions when modifying the corresponding view (using the new naming convention for a view's on-modify function)
bugfix: inputs/.TNRS/schema.sql: MatchedTaxon_modify(): updated to include taxon_scrub derived fields
bugfix: schemas/util.sql: mk_drop_from_create(): need to match first rather than last CREATE
inputs/.TNRS/schema.sql: *_modify(): allow running without a view_query, as recreate_view() now supports this