* Create a link to edit the custom fields for a given class somewhere in your app: * * <a href="/admin/extended?extends=blog\Post&name=Blog Posts">{"Custom Fields"}</a> */ if (!$this->internal) { return; } $this->require_admin(); if (!isset($data['extends'])) { return; } $class = $data['extends']; if (!class_exists($class)) { return; } $data['fields'] = ExtendedFields::for_class($class); $data['modal'] = isset($data['modal']) && $data['modal'] !== 'false' ? true : false; $data['open'] = false; $data['id'] = isset($data['id']) ? $data['id'] : false; $load_assets = false; $load_date_widget = false; if ($data['fields'] || count($data['fields']) === 0) { foreach ($data['fields'] as $k => $field) { if (isset($data['values']) && isset($data['values'][$field->name])) { $data['fields'][$k]->value = $data['values'][$field->name]; // keep open if data was previously set if ($data['values'][$field->name] && $data['values'][$field->name] !== '') { $data['open'] = true; } } if ($field->type === 'select') {
set_time_limit(0); ini_set('auto_detect_line_endings', true); $headers = array(); $samples = array(); if (($f = fopen($file, 'r')) !== false) { while (($row = fgetcsv($f, 0, ',')) !== false) { if (count($row) === 1 && $row[0] === null) { // ignore blank lines, which come through as array(null) continue; } if (count($headers) === 0) { $headers = $row; } elseif (count($samples) < 3) { $samples[] = $row; } else { break; } } fclose($f); require_once 'apps/blog/lib/Filters.php'; echo $tpl->render('user/import/csv2', array('headers' => $headers, 'samples' => $samples, 'extended' => ExtendedFields::for_class('User'))); return; } else { echo '<p><strong>' . __('Unable to parse the uploaded file.') . '</strong></p>'; } } else { echo '<p><strong>' . __('Error uploading file.') . '</strong></p>'; } } $o = new StdClass(); echo $tpl->render('user/import/csv', $o);
$country = false; $zip = false; $fields = ExtendedFields::for_class('User'); foreach ($_POST as $k => $v) { if (strpos($k, 'map-') === 0 && $v !== '') { $n = (int) str_replace('map-', '', $k); ${$v} = $n; } } // Remove first line array_shift($res); foreach ($res as $k => $row) { $name_joined = $first_name !== false ? $row[$first_name] . ' ' . $row[$last_name] : ''; $user = array('name' => $name !== false ? $row[$name] : $name_joined, 'email' => $email !== false ? trim($row[$email]) : '', 'company' => $company !== false ? $row[$company] : '', 'title' => $title !== false ? $row[$title] : '', 'website' => $website !== false ? $row[$website] : '', 'photo' => $photo !== false ? $row[$photo] : '', 'about' => $about !== false ? $row[$about] : '', 'phone' => $phone !== false ? $row[$phone] : '', 'fax' => $fax !== false ? $row[$fax] : '', 'address' => $address !== false ? $row[$address] : '', 'address2' => $address2 !== false ? $row[$address2] : '', 'city' => $city !== false ? $row[$city] : '', 'state' => $state !== false ? $row[$state] : '', 'country' => $country !== false ? $row[$country] : '', 'zip' => $zip !== false ? $row[$zip] : '', 'password' => '', 'type' => 'member', 'expires' => gmdate('Y-m-d H:i:s'), 'signed_up' => gmdate('Y-m-d H:i:s'), 'updated' => gmdate('Y-m-d H:i:s')); if ($user['email'] === '' || !Validator::validate($user['email'], 'unique', '#prefix#user.email')) { continue; } $u = new User($user); $fields = ExtendedFields::for_class('User'); foreach ($fields as $field) { if (isset(${$field->name}) && ${$field->name} !== false) { $u->ext($field->name, $row[${$field->name}]); } } if ($u->put()) { Versions::add($u); $imported++; } } echo '<p>' . __('Imported %d members.', $imported) . '</p>'; echo '<p><a href="/user/admin">' . __('Continue') . '</a></p>';
/** * Update the sorting order of the specified fields. * Accepts an array of field IDs of the form: * * fields[]=2&fields[]=1&fields[]=3 * * This should be the new sorting order (ascending). */ public function post_sort() { if (!isset($_POST['fields']) || !is_array($_POST['fields'])) { return $this->error(__('Missing parameter: fields')); } ExtendedFields::batch(function () { for ($i = 0; $i < count($_POST['fields']); $i++) { if (!DB::execute('update #prefix#extended_fields set sort = ? where id = ?', $i, $_POST['fields'][$i])) { return false; } } return true; }); return true; }
if (!isset($_GET['name'])) { $_GET['name'] = $_GET['extends']; } // Create the database table if it doesn't exist if (!DB::single('select count(*) from #prefix#extended_fields')) { $db = DB::get_connection(true); $queries = sql_split(file_get_contents(sprintf('apps/admin/conf/update/extended_fields_%s.sql', $db->getAttribute(PDO::ATTR_DRIVER_NAME)))); foreach ($queries as $query) { DB::execute($query); } } $page->layout = 'admin'; $page->title = __('Custom Fields') . ': ' . __($_GET['name']); $page->add_script('/apps/admin/js/handlebars-1.0.rc.1.js'); $page->add_script('/js/jquery-ui/jquery-ui.min.js'); $page->add_script('/apps/admin/js/extended.js'); $data = array('extends' => $_GET['extends']); $data['fields'] = ExtendedFields::for_class($_GET['extends']); if (!is_array($data['fields'])) { $data['fields'] = array(); } $res = glob('apps/*/conf/fields.php'); $res = is_array($res) ? $res : array(); $data['custom'] = array(); foreach ($res as $file) { $fields = parse_ini_file($file, true); foreach ($fields as $field => $settings) { $data['custom'][$field] = $settings['name']; } } echo $tpl->render('admin/extended', $data);