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]}"); } } } } } }