IMC-Drupal/Development/Hiddens/VersionTwoNotes

From Aktivix
Jump to navigation Jump to search

Notes made developing version two of the Drupal Hidden module

Detailed Notes

  • _hidden_log function added
    • including writing to watchdog
    • writing to mail message
  • _help and _menu links added
  • _menu $may_cache sorted - non cachable links are created depending on the nodes hidden status. If not hidden there is no link for hidden item page, and no unhide, just a hide form callback. If hidden a hidden object is created and passed to view and unhide callbacks.
    • /admin/settings/spam should this have the filters in it too
    • /admin/content/node/list/hidden admin list of hiddens with content/node/list
    • /admin/content/node/list/hiddenreported admin list of reported posts, their status and if they have been checked
    • /admin/content/comment/list/hidden admin list of hiddens with content/comment/list
    • /admin/content/comment/list/hiddenreported admin list of reported posts, their status and if they have been checked
    • /hidden combined listing page
    • /hidden/node node listing page
    • /hidden/comment comment listing page
    • /hidden/node/$nid non-cachable - node display
    • /hidden/node/$nid/action non-cachable - where action is hide, unhide or report
    • /hidden/comment/$cid non-cachable - comment display
    • /hidden/comment/$cid/action non-cachable - where action is hide, unhide or report
  • organised required variables and settings
  • created _comment and _nodeapi hooks
    • included delete, to remove from hidden system if deleted, were left in previously
    • ready to hook into filter
    • moved reformatting of hidden content into hook $op view (and for node also alter). Title no longer needs changing in DB. Hidden information displayed in other not /hidden/... views (admin user looking at pages sees unpublished material).
    • TODO see edit note on hide form
  • created _hidden_mail to send e-mail notices
  • created _cron hook for periodic e-mailing
  • made _link hook themeable
  • updated hide form and submission
    • made hide form themeable
    • added private notes section and made hide form work for reporting as well as hiding - TODO using for editing
    • hide form takes list of active reasons for hiding from {hidden_reasons}
  • removed _update hook as hidden isn't a node type
  • altered _hidden_is_hidden to ($type, $id) now returns a hidden object or false
  • updated db query functions insert works with ($type, $nid, $cid, $reason) delete works with ($type, $id)
  • reason details, public and private notes all now filtered on output using drupal check_markup($string, FILTER_HTML_ESCAPE) filter rest still uses check_plain()
  • changed _hidden_check_nan() to _hidden_check_params() this now only needs to only be called by the hide form processing functions, at also sanity checks against type of content now. Other functions are using drupal menu item creation and _hidden_is_hidden() validation.
  • Hidden display list functions altered/created
    • hidden_list_nodes and theme_hidden_list_nodes - now using themeable table - title, user, reason listed
    • hidden_admin_list_nodes and theme_hidden_admin_list_nodes - new with additional info (date...) and sorting capabilities to the public user lists
    • hidden_list_comments and theme_hidden_list_comments - as nodes above
    • hidden_admin_list_comments and theme_hidden_admin_list_comments - as nodes above, not this is the only place mass operations can be added in for comments
  • removing hard coded drupal goto's from reusable functions, should handled by calling function depending on where they come from - returning to node/comment is probably a desirable option in many cases
  • added hidden_*_reasons_* functions
    • created admin for creating, enabling and disabling standard reasons for hiding articles. Table alterations will have to written into .install script
  • altered froms to allow for different default reasons and public and private
  • added report links, it uses the hide form with different parameters
  • added report admin view pages on content and comment tabs (as hidden list above)
  • adding hidden_*_filters_* functions

CREATE TABLE `hidden` (
  `hid` int(10) unsigned NOT NULL auto_increment,
  `nid` int(10) unsigned NOT NULL default '0',
  `cid` int(10) unsigned NOT NULL default '0',
  `created` int(10) unsigned NOT NULL default '0',
  `rid` int(4) unsigned NOT NULL default '0',
  `publicnote` text NOT NULL default '',
  `privatenote` text NOT NULL default '',
  `uid` int(10) unsigned NOT NULL default '0',
  `delay` int(10) unsigned NOT NULL default '0';
  PRIMARY KEY  (`hid`, `nid`, `cid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
or
 mysql> ALTER TABLE hidden CHANGE COLUMN reason publicnote text NOT NULL default '';
 mysql> ALTER TABLE hidden ADD COLUMN privatenote text NOT NULL default '';
 mysql> ALTER TABLE hidden ADD COLUMN rid int(4) unsigned NOT NULL default '1';
 mysql> ALTER TABLE hidden ADD COLUMN uid int(10) unsigned NOT NULL default '0';
 mysql> ALTER TABLE hidden ADD COLUMN delay int(10) unsigned NOT NULL default '0';

CREATE TABLE `hidden_reasons` (
  `rid` int(4) unsigned NOT NULL auto_increment,
  `title` varchar(255) NOT NULL default '',
  `description` text,
  `enabled` tinyint(2) NOT NULL default '1',
  PRIMARY KEY  (`rid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE `hidden_reported` (
  `repid` int(10) unsigned NOT NULL auto_increment,
  `nid` int(10) unsigned NOT NULL default '0',
  `cid` int(10) unsigned NOT NULL default '0',
  `created` int(10) unsigned NOT NULL default '0',
  `rid` int(4) unsigned NOT NULL default '0',
  `publicnote` text NOT NULL default '',
  `privatenote` text NOT NULL default '',
  `uid` int(10) unsigned NOT NULL default '0',
  `seen` tinyint(2) unsigned,
  `suid` int(10) unsigned,
  PRIMARY KEY  (`repid`, `nid`, `cid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE `hidden_log` (
 `hidetime` int(10) unsigned NOT NULL default '0',
 `action` int(4) unsigned NOT NULL default '0',
 `description` text NOT NULL default '',
 `ids` text NOT NULL default '',
 `uid` int(10) unsigned NOT NULL default '0',
 PRIMARY KEY  (`hidetime`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE `hidden_filters` (
  `hfid` int(10) unsigned NOT NULL auto_increment,
  `filter` varchar(255) NOT NULL,
  `type` tinyint(2) unsigned NOT NULL default '1',
  `hits` int(10) unsigned NOT NULL default '0',
  `lasthit` int(10) unsigned NOT NULL default '0',
  `enabled` tinyint(2) NOT NULL default '1',
  `weight` int(10) NOT NULL default '0',
  PRIMARY KEY (`hfid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE `hidden_filter_reasons` (
  `hfid` int(10) unsigned NOT NULL,
  `title` varchar(255) NOT NULL,
  `rid` int(4) unsigned NOT NULL default '0',
  `publicnote` text NOT NULL default '',
  `privatenote` text NOT NULL default '',
  `uid` int(10) unsigned NOT NULL default '0',
  `delay` int(10) unsigned NOT NULL default '0',
  PRIMARY KEY (`hfid`),
  FOREIGN KEY (`hfid`) REFERENCES hidden_filters(`hfid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

/* NB MyISAM doesn't enforce FOREIGN KEY yet, but it's there anyway */