Example #1
0
 * 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') {
Example #2
0
        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);
Example #3
0
$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>';
Example #4
0
 /**
  * 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;
 }
Example #5
0
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);