<?php
/*
Plugin Name: Hide Category Toggle
Description: Toggle display of child categories based on parent category
Version: 1.00
Requires at least: 2.53
*/
/* 
DEV NOTES: Beta plugin
HAS BEEN WRITTEN FOR AND TESTED WITH A MAX DEPTH OF 2 (PARENT LEVEL AND ONE CHILD LEVEL)
HAVE NOT TRIED ON VERSIONS PRIOR TO 2.53 - Open to feedback from users
*/
addAction('record_postsave', 'hideCategoryToggle', null, 4);

//
function hideCategoryToggle($tableName, $isNewRecord, $oldRecord, $recordNum) {
  global $CURRENT_USER, $SETTINGS;
  $fieldname = 'hidden';
  $tablePrefix = $SETTINGS['mysql']['tablePrefix'];
  $categoryTable = 'category';
  
  // error checking
  if ($tableName != $categoryTable) { return; } 
  $mySqlColsAndTypesMBOL = getMySqlColsAndType($tablePrefix.$categoryTable);
  if (!array_key_exists($fieldname, $mySqlColsAndTypesMBOL)) {
    die(__FUNCTION__ .": You must create a category field called '$fieldname'!");
  }
  
  // return if parent
  if ($_REQUEST['parentNum'] != 0) { return; }

  // continue if child - category display toggle
  $wasChecked   = intval(!$oldRecord[$fieldname] && $_REQUEST[$fieldname]);
  $wasUnchecked = intval($oldRecord[$fieldname]  && !$_REQUEST[$fieldname]);

  $siteCategory = mysql_select($tablePrefix.$categoryTable, "parentNum = '".$_REQUEST['num']."'");
  
  if ($wasChecked) { 
      foreach ($siteCategory as $siteCategoryRecord) {
	  mysql_update($tablePrefix.$categoryTable, $siteCategoryRecord['num'], null, array('hidden' => '1'));   
	  }
  } else { 
      foreach ($siteCategory as $siteCategoryRecord) {
	  mysql_update($tablePrefix.$categoryTable, $siteCategoryRecord['num'], null, array('hidden' => '0'));   
	  }
  }
  
} 
 
?>
