function retrieve_relationships($module_name, $related_module, $relationship_query, $show_deleted, $offset, $max_results) { global $beanList, $beanFiles, $dictionary, $current_user; $error = new SoapError(); $result_list = array(); if (empty($beanList[$module_name]) || empty($beanList[$related_module])) { $error->set_error('no_module'); return array('result' => $result_list, 'error' => $error->get_soap_array()); } $result = retrieve_relationship_query($module_name, $related_module, $relationship_query, $show_deleted, $offset, $max_results); if (empty($result['module_1'])) { $error->set_error('no_relationship_support'); return array('result' => $result_list, 'error' => $error->get_soap_array()); } $query = $result['query']; $module_1 = $result['module_1']; $table = $result['join_table']; $class_name = $beanList[$module_1]; require_once $beanFiles[$class_name]; $mod = new $class_name(); $count_query = str_replace('rt.*', 'count(*)', $query); $result = $mod->db->query($count_query); $row = $mod->db->fetchByAssoc($result); $total_count = $row['count(*)']; if ($max_results != '-99') { $result = $mod->db->limitQuery($query, $offset, $max_results); } else { $result = $mod->db->query($query); } while ($row = $mod->db->fetchByAssoc($result)) { $result_list[] = $row; } return array('table_name' => $table, 'result' => $result_list, 'total_count' => $total_count, 'error' => $error->get_soap_array()); }
function get_quick_sync_data($session, $module_name, $related_module_name, $start, $count, $db_type, $deleted) { $error = new SoapError(); $field_list = array(); $output_list = array(); if (!validate_authenticated($session)) { $error->set_error('invalid_login'); return array('result' => "", 'result_count' => 0, 'error' => $error->get_soap_array()); } global $current_user; if (!check_modules_access($current_user, $module_name, 'read')) { $error->set_error('no_access'); return array('result' => "", 'result_count' => 0, 'error' => $error->get_soap_array()); } $seed = BeanFactory::getBean($module_name); if (empty($seed)) { $error->set_error('no_module'); return array('result' => "", 'result_count' => 0, 'error' => $error->get_soap_array()); } $table_name = ""; $is_related_query = false; if (empty($related_module_name) || !isset($related_module_name)) { $params['include_custom_fields'] = true; $query_list = $seed->create_new_list_query('', '', array(), $params, (int) $deleted, '', true, $seed); $query = "SELECT " . $seed->table_name . ".*"; if (empty($query_list['from_min'])) { $query .= ' ' . $query_list['from']; } else { $query .= ' ' . $query_list['from_min']; } $query .= ' ' . $query_list['where']; $table_name = $seed->table_name; } else { $result = retrieve_relationship_query($module_name, $related_module_name, "", $deleted, $start, $count); $query = $result['query']; $table_name = $result['join_table']; $is_related_query = true; } //set the dbType on the client machine $GLOBALS['log']->fatal("Quick Sync Data Query: " . $query); $result = $seed->db->generateInsertSQL($seed, $query, $start, $count, $table_name, $db_type, $is_related_query); $data['data'] = $result['data']; $data['cstm'] = $result['cstm_sql']; $ret_data = base64_encode(serialize($data)); return array('result' => $ret_data, 'result_count' => $result['result_count'], 'next_offset' => $result['next_offset'], 'total_count' => $result['total_count'], 'error' => $error->get_soap_array()); }