location_taxonomize_location.module in Location Taxonomize 7.2
File
location_taxonomize_location/location_taxonomize_location.module
View source
<?php
require_once 'location_taxonomize_location.inc';
function location_taxonomize_location_location_taxonomize_source() {
return array(
'location_taxonomize_location' => 'Location',
);
}
function location_taxonomize_form_alter(&$form, &$form_state, $form_id) {
if (isset($form['locations']) && $form['#node_edit_form'] == TRUE) {
$form['#submit'][] = 'location_taxonomize_location_submitt';
}
}
function location_taxonomize_location_submitt($form, &$form_state) {
if (_location_taxonomize_get_source() != LT_LOC_MODULE_ID) {
return;
}
if (!location_taxonomize_enabled()) {
return;
}
$locations = $form_state['values']['locations'];
$items = array();
foreach ($locations as $obj) {
unset($obj['location_settings']);
if (!location_taxonomize_location_location_empty($obj)) {
$location = location_taxonomize_location_fixup($obj);
$items[] = $location;
}
}
if (!empty($items)) {
location_taxonomize_taxonomize($items, $form, $form_state);
}
}
function location_taxonomize_location_bulk_taxonomize_op($form_state, &$context) {
if (!isset($context['sandbox']['progress'])) {
$max = db_query('SELECT COUNT(DISTINCT lid) FROM {location}')
->fetchField();
$context['sandbox']['progress'] = 0;
$context['sandbox']['max'] = $max;
$context['sandbox']['current'] = 0;
$context['results']['added'] = 0;
$context['results']['processed'] = 0;
}
$limit = 20;
$result = db_query_range("SELECT lid, name, street, additional, city, province, postal_code, country, latitude, longitude, source FROM {location} WHERE lid <> 0 ORDER BY lid ASC", $context['sandbox']['current'], $limit, array());
$result_array = $result
->fetchAllAssoc('lid');
$taxonomize = array();
$count = 0;
foreach ($result_array as $row) {
$address = location_taxonomize_location_fixup((array) $row);
$lid = $address['lid'];
$nid_results = db_query("SELECT nid FROM {location_instance} WHERE lid = :lid", array(
":lid" => $lid,
));
$nid = $nid_results
->fetchField();
$taxonomize[$nid][] = $address;
$count++;
}
$results = location_taxonomize_taxonomize_bulk($taxonomize);
$saved = $results['saved'];
$context['results']['added'] += $saved;
$context['sandbox']['progress'] += $count;
$context['message'] = t('Processing location', array());
$context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
$context['sandbox']['current'] = $context['sandbox']['progress'];
$context['results']['processed'] = $context['sandbox']['progress'];
}
function location_taxonomize_location_location_empty($location) {
$count = count($location);
$empty = 0;
foreach ($location as $item => $value) {
if (empty($value) || $value == '' || !isset($value)) {
$empty++;
}
}
if ($empty >= $count - 1) {
return TRUE;
}
else {
return FALSE;
}
}