public static function hardDeleteOption($table, $owner_col, $owner_id, $option_col, $option_id)
 {
     return MultiOptionList::hardDeleteOption($table, $owner_col, $owner_id, $option_col, $option_id);
 }
 /**
  * Matches as posted set of multiple drop downs or checkboxes with an option list intersection table.
  * May update extra columns within link table
  * 	 *
  * @param unknown_type $linktable
  * @param unknown_type $optionLookupTable
  * @param unknown_type $owner_col
  * @param unknown_type $owner_id
  * @param unknown_type $option_col
  * @param array $valuesFromPost contains the main column values
  * @param array|string $extra_col additional columns to update
  * @param array $extra_values array or array of arrays with values to update ; the indexes must match $valuesFromPost and $extra_col
  */
 public static function updateOptions($linktable, $optionLookupTable, $owner_col, $owner_id, $option_col, $valuesFromPost, $extra_col = '', $extra_values = array())
 {
     if ($valuesFromPost === null) {
         return;
     }
     $optionRowsArray = MultiOptionList::choicesList($linktable, $owner_col, $owner_id, $optionLookupTable, false, $option_col);
     // get extra field value(s) associate drop-down
     if ($extra_col && !is_array($extra_col)) {
         $extra_values = array($extra_values);
         $extra_col = array($extra_col);
     }
     if ($valuesFromPost && is_array($extra_col)) {
         foreach ($extra_col as $colkey => $col) {
             foreach ($valuesFromPost as $key => $id) {
                 if ($id !== '') {
                     $extra[$id][$col] = isset($extra_values[$colkey][$key]) ? $extra_values[$colkey][$key] : 0;
                 }
             }
         }
     }
     foreach ($optionRowsArray as $option_row) {
         $option_id = $option_row['id'];
         //turn off
         if ($option_row[$owner_col] and ($valuesFromPost == null or array_search($option_id, $valuesFromPost) === false and (!isset($valuesFromPost[$option_id]) or !$valuesFromPost[$option_id]))) {
             MultiOptionList::hardDeleteOption($linktable, $owner_col, $owner_id, $option_col, $option_id);
             //turn on
         } else {
             if (!$option_row[$owner_col] and $valuesFromPost and array_search($option_id, $valuesFromPost) !== false) {
                 MultiOptionList::insertOption($linktable, $owner_col, $owner_id, $option_col, $option_id, $extra_col, isset($extra) && is_array($extra[$option_id]) ? $extra[$option_id] : '');
             } else {
                 if ($extra_col) {
                     // update extra field
                     if (isset($extra[$option_id])) {
                         $optionsTable = new MultiOptionList(array('name' => $linktable));
                         $update_fields = array();
                         foreach ($extra_col as $col) {
                             $update_fields[$col] = $extra[$option_id][$col];
                         }
                         $optionsTable->update($update_fields, "{$option_col}={$option_id} AND {$owner_col}={$option_row[$owner_col]}");
                     }
                 }
             }
         }
     }
 }