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());
}
Example #2
0
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());
}