! Purpose
! Last release
! Confirm used? Example usage + notes
|-
| [https://github.com/debtcompliance/mediawiki/wiki/Extensions#dcsamendments DcsAmmendments]
| Adds ammendments section to DCS loan pages. Sysop (only) can add/delete/edit/re-order (up/down) the ammendments; UX [https://github.com/debtcompliance/mediawiki/blob/master/extensions/DcsAmmendments/modules/dcsammendments.js implemented in JavaScript]. Extends the API with the same functions. Adds new log type: amendments; and logs all actions.
| Jan 2018 - new sort functionality ready for testing
| yeshttps://clienttest.dm.dcstemporary.com/ARCA14:1.5_Time_References
|-
| [https://github.com/debtcompliance/mediawiki/wiki/Extensions#dcsbaskets DcsBaskets]| purpose?This extension allows the utilization column of the Baskets tables to be edited directly using AJAX and saving values into 'basket' tables rather than in the traditional wiki-text revision tables.| release?1.4.3, 2018-05-25| yesUnable to find example.
|-
| DcsCommon| [https://github.com/debtcompliance/mediawiki/wiki/Extensions#dcscommonDcsCommon]
| Cookie handling was [https://github.com/debtcompliance/mediawiki/commit/41b4c2a9af447c25143da7e39d959dae3affd0c8#diff-dfec3a4f5a263c72b06f5ceafcac3408 added on June 14, 2017]. The code (the cookie.js part) is from a project called [https://github.com/js-cookie/js-cookie/blob/master/src/js.cookie.js js-cookie]. So, we could update that code. Or, we could replace it with internal functions so we don't rely on 3rd party code. See the API documentation for [https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/mw.cookie mw.cookie] (Does '''not''' use the $wgCookieSecure configuration variable since 'detect' could not work with
ResourceLoaderStartUpModule; as module cache is not fragmented by protocol.) The mw.cookie (JavaScript) code is syntactically and functionally similar to the server-side cookie API (`[https://doc.wikimedia.org/mediawiki-core/master/php/classWebRequest.html#aa952980c6053a1e23c3ce673eb0f1d6d WebRequest#getCookie]` and `[https://doc.wikimedia.org/mediawiki-core/master/php/classWebResponse.html#a92cfd006677a1d96c3cee8ee3edcccd3 WebResponse#setcookie]`).
The series of extensions create [https://github.com/debtcompliance/mediawiki/blob/bf8a1096e71d2e997c626b9d6e33b4799ba4a87e/extensions/DcsEmailLink/DcsEmailLink.php#L4 DcsInit()] (in DcsEmailLink), DcsBlockPageAccess(), and DcsReady() hook functions. DcsReady() implementations are different across different classes from Basket to [https://github.com/debtcompliance/mediawiki/blob/93999818fd46c2075638120b12d4f684968daa90/extensions/DcsSingleSignOn/DcsSingleSignOn.php#L42 DcsSingleSignOn].
| The 'common' extension creates a singleton instance of the DcsCommon class that does a bunch of things according to [https://github.com/debtcompliance/mediawiki/wiki/Extensions#dcscommon notes in the wiki]. The permissions shouldn't really be hidden away in the class code. They should simply be in LocalSettings.php. onUserGetRights() is a big function. The 'self:cache' is mostly called in connection with 'isLocal'. Any true caching should just be offloaded to APC and memcache. Although there is no 'dcs' table in the database on dcsTemporary, the [https://github.com/debtcompliance/mediawiki/blob/master/extensions/DcsCommon/DcsCommon.php#L653 setData()] method is used throughout the codebase so should update [https://github.com/debtcompliance/mediawiki/wiki/Extensions#dcscommon wiki] about where this data is stored.| recent| pervasive
|-
| DcsComplianceChecklist
| yes
|-
| [https://github.com/debtcompliance/mediawiki/tree/master/extensions/DcsJobAdminDcsJobAdmin]| purposeCreates a Special Page [https://clienttest.dm.dcstemporary.com/Special:DcsJobAdmin Special:DcsJobAdmin] where you can start a new job; or view current and historical jobs. Each job type loads it's own form into the Admin page. The job runner extends the Maintenance class, and loops over running jobs to provide some progress reporting. It saves the most recent 10 jobs to a 'history' list.There are functions in the code for:* Return a list of the currently running jobs sorted by start time.* Add a job to the 'history' list of jobs executed (list is limited to 10 items).* Get a 'history' list of the last 10 jobs* Get job data (both current and history)* shell_exec() to the process table to find DcsJobRunner. Return the currently running jobs by Process ID (PID)* register the PHP code classes for each job type: ** Change Namespace** EditTest** Import** ImportXML** Links** PhpTest** ReplaceText** UpgradeAttachments Each (or almost all?) PHP file is backed by a perl file which was the basis for the PHP development? I'm not really sure why everything is written twice. According to [https://github.com/debtcompliance/mediawiki/wiki/Extensions#dcsjobadmin the documentation], it allows you to manage jobs. But, I'm wondering how much this is actually used?The job queue should be run automatically by cron, and the administrative user shouldn't have to worry about it really. If there is a usage pattern where job execution is time sensitive, there is a use for an Admin function; but I'm curious about the usage patterns that create large or numerous jobs. Otherwise, set wgJobRunRate to zero, and put it into cron `0 0 * * * root /usr/bin/php /var/www/example.com/www/w/maintenance/runJobs.php > /var/log/runJobs.log 2>&1`| release?2018-05-25
| yes
|-