function create_from_external($obj_id, $obj_type) { if ($obj_type == TYPE_DISH) { $obj = new dish($obj_id); foreach ($obj->ingredients() as $ingredid) { $err = $this->create_from_external($ingredid, TYPE_INGREDIENT); if ($err && $err != ERR_OBJECT_ALREADY_EXISTS) { return $err; } } foreach ($obj->dispingredients() as $ingredid) { $err = $this->create_from_external($ingredid, TYPE_INGREDIENT); if ($err && $err != ERR_OBJECT_ALREADY_EXISTS) { return $err; } } } elseif ($obj_type == TYPE_INGREDIENT) { $obj = new ingredient($obj_id); } else { return ERR_NO_TYPE_SPECIFIED; } if ($this->find_external($obj_id, $obj_type)) { return ERR_OBJECT_ALREADY_EXISTS; } $input_data['name'] = $obj->name(); $input_data['ref_type'] = $obj_type; $input_data['ref_id'] = $obj_id; $err = $this->insert($input_data); return $err; }
function find_connected_dishes($show_deleted = false, $link = false) { $output = array(); $query = "SELECT dishes.id, dishes.table_id, dishes.table_name FROM `dishes`"; $query .= " JOIN `dishes` WHERE dishes.table_id=dishes.id"; $query .= " AND (`ingreds` LIKE '% " . $this->id . " %'"; $query .= " OR `ingreds` LIKE '" . $this->id . " %'"; $query .= " OR `ingreds` LIKE '" . $this->id . "'"; $query .= " OR `ingreds` LIKE '% " . $this->id . "')"; if (!$show_deleted) { $query .= " AND dishes.deleted='0'"; } $query .= " ORDER BY dishes.table_name ASC"; $res = common_query($query, __FILE__, __LINE__); if (!$res) { return ERR_MYSQL; } while ($arr = mysql_fetch_array($res)) { $dish = new dish($arr['id']); $tmp = ''; if ($link) { $tmp .= '<a href="' . $this->file . '?class=dish&command=edit&data[id]=' . $dish->id . '">'; } $tmp .= $dish->name($_SESSION['language']); if ($link) { $tmp .= '</a>'; } $output['included'][$dish->id] = $tmp; } $query = "SELECT dishes.id, dishes.table_id, dishes.table_name FROM `dishes`"; $query .= " JOIN `dishes` WHERE table_id=dishes.id"; $query .= " AND (`dispingreds` LIKE '% " . $this->id . " %'"; $query .= " OR `dispingreds` LIKE '" . $this->id . " %'"; $query .= " OR `dispingreds` LIKE '" . $this->id . "'"; $query .= " OR `dispingreds` LIKE '% " . $this->id . "')"; if (!$show_deleted) { $query .= " AND dishes.deleted='0'"; } $query .= " ORDER BY dishes.table_name ASC"; $res = common_query($query, __FILE__, __LINE__); if (!$res) { return ERR_MYSQL; } while ($arr = mysql_fetch_array($res)) { $dish = new dish($arr['id']); $ingreds = $dish->dispingredients($arr['dispingreds']); if (!empty($ingreds) && is_array($ingreds)) { if (in_array($this->id, $ingreds)) { $tmp = ''; if ($link) { $tmp .= '<a href="' . $this->file . '?class=dish&command=edit&data[id]=' . $dish->id . '">'; } $tmp .= $dish->name($_SESSION['language']); if ($link) { $tmp .= '</a>'; } $output['available'][$dish->id] = $tmp; } } } return $output; }
function list_rows($arr, $row) { global $tpl; global $display; $col = 0; if (!$this->disable_mass_delete) { $display->rows[$row][$col] = '<input type="checkbox" name="delete[]" value="' . $arr['id'] . '">'; $display->width[$row][$col] = '1%'; $col++; } elseif ($arr['table_id'] == TABLE_DISHES) { $dish = new dish($arr['id']); if (count($dish->ingredients()) || count($dish->dispingredients())) { $display->rows[$row][$col] = '<input type="checkbox" name="edit[]" value="' . $arr['id'] . '">'; } else { $display->rows[$row][$col] = ' '; } $display->width[$row][$col] = '1%'; $col++; } else { $display->rows[$row][$col] = ' '; $display->width[$row][$col] = '1%'; $col++; } foreach ($arr as $field => $value) { if (isset($this->hide) && in_array($field, $this->hide)) { continue; } switch ($arr['table_id']) { case TABLE_INGREDIENTS: $obj = new ingredient(); break; case TABLE_DISHES: $obj = new dish(); break; case TABLE_CATEGORIES: $obj = new category(); break; case TABLE_TABLES: $obj = new table(); break; case TABLE_USERS: $obj = new user(); break; case TABLE_VAT_RATES: $obj = new vat_rate(); break; case TABLE_PRINTERS: $obj = new printer(); break; case TABLE_STOCK_OBJECTS: $obj = new stock_object(); break; case TABLE_STOCK_DISHES: $obj = new dish(); break; } if (method_exists($obj, 'form')) { $link = $obj->file . '?class=' . get_class($obj) . '&command=edit&data[id]=' . $arr['id']; } else { $link = ''; } $display->rows[$row][$col] = $value; if ($link && $field == 'name') { $display->links[$row][$col] = $link; } if ($link) { $display->clicks[$row][$col] = 'redir(\'' . $link . '\');'; } $col++; } }