コード例 #1
0
ファイル: SoapPortalHelper.php プロジェクト: MexinaD/SuiteCRM
function portal_get_entry_list_limited($session, $module_name, $where, $order_by, $select_fields, $row_offset, $limit)
{
    global $beanList, $beanFiles, $portal_modules;
    $error = new SoapError();
    if (!portal_validate_authenticated($session)) {
        $error->set_error('invalid_session');
        return array('result_count' => -1, 'entry_list' => array(), 'error' => $error->get_soap_array());
    }
    if ($_SESSION['type'] == 'lead') {
        $error->set_error('no_access');
        return array('result_count' => -1, 'entry_list' => array(), 'error' => $error->get_soap_array());
    }
    if (empty($beanList[$module_name])) {
        $error->set_error('no_module');
        return array('result_count' => -1, 'entry_list' => array(), 'error' => $error->get_soap_array());
    }
    if ($module_name == 'Cases') {
        //if the related cases have not yet been loaded into the session object,
        //then call the methods that will load the cases related to the contact/accounts for this user
        if (!isset($_SESSION['viewable'][$module_name])) {
            //retrieve the contact/account id's for this user
            $c = get_contacts_in();
            $a = get_accounts_in();
            if (!empty($c)) {
                get_cases_in_contacts($c);
            }
            if (!empty($a)) {
                get_cases_in_accounts($a);
            }
        }
        $sugar = new aCase();
        $list = array();
        //if no Cases have been loaded into the session as viewable, then do not issue query, just return empty list
        //issuing a query with no cases loaded in session will return ALL the Cases, which is not a good thing
        if (!empty($_SESSION['viewable'][$module_name])) {
            $list = get_related_list(get_module_in($module_name), new aCase(), $where, $order_by, $row_offset, $limit);
        }
    } else {
        if ($module_name == 'Contacts') {
            $sugar = new Contact();
            $list = get_related_list(get_module_in($module_name), new Contact(), $where, $order_by);
        } else {
            if ($module_name == 'Accounts') {
                $sugar = new Account();
                $list = get_related_list(get_module_in($module_name), new Account(), $where, $order_by);
            } else {
                if ($module_name == 'Bugs') {
                    //if the related bugs have not yet been loaded into the session object,
                    //then call the methods that will load the bugs related to the contact/accounts for this user
                    if (!isset($_SESSION['viewable'][$module_name])) {
                        //retrieve the contact/account id's for this user
                        $c = get_contacts_in();
                        $a = get_accounts_in();
                        if (!empty($c)) {
                            get_bugs_in_contacts($c);
                        }
                        if (!empty($a)) {
                            get_bugs_in_accounts($a);
                        }
                    }
                    $list = array();
                    //if no Bugs have been loaded into the session as viewable, then do not issue query, just return empty list
                    //issuing a query with no bugs loaded in session will return ALL the Bugs, which is not a good thing
                    if (!empty($_SESSION['viewable'][$module_name])) {
                        $list = get_related_list(get_module_in($module_name), new Bug(), $where, $order_by, $row_offset, $limit);
                    }
                } else {
                    if ($module_name == 'KBDocuments') {
                    } else {
                        if ($module_name == 'FAQ') {
                        } else {
                            $error->set_error('no_module_support');
                            return array('result_count' => -1, 'entry_list' => array(), 'error' => $error->get_soap_array());
                        }
                    }
                }
            }
        }
    }
    $output_list = array();
    $field_list = array();
    foreach ($list as $value) {
        //$loga->fatal("Adding another account to the list");
        $output_list[] = get_return_value($value, $module_name);
        $_SESSION['viewable'][$module_name][$value->id] = $value->id;
        if (empty($field_list)) {
            $field_list = get_field_list($value);
        }
    }
    $output_list = filter_return_list($output_list, $select_fields, $module_name);
    $field_list = filter_field_list($field_list, $select_fields, $module_name);
    return array('result_count' => sizeof($output_list), 'next_offset' => 0, 'field_list' => $field_list, 'entry_list' => $output_list, 'error' => $error->get_soap_array());
}
コード例 #2
0
function get_return_module_fields($value, $module, $error, $translate = true)
{
    global $module_name;
    $module_name = $module;
    return array('module_name' => $module, 'module_fields' => get_field_list($value, $translate), 'error' => get_name_value_list($value));
}
コード例 #3
0
function portal_get_related_list($session, $module_name, $rel_module, $module_id, $select_fields, $order_by, $offset, $limit)
{
    global $beanList, $beanFiles;
    $error = new SoapError();
    if (!portal_validate_authenticated($session)) {
        $error->set_error('invalid_session');
        return array('result_count' => -1, 'entry_list' => array(), 'error' => $error->get_soap_array());
    }
    if ($_SESSION['type'] == 'lead') {
        $error->set_error('no_access');
        return array('result_count' => -1, 'entry_list' => array(), 'error' => $error->get_soap_array());
    }
    if (empty($beanList[$module_name])) {
        $error->set_error('no_module');
        return array('result_count' => -1, 'entry_list' => array(), 'error' => $error->get_soap_array());
    }
    if (empty($_SESSION['viewable'][$module_name][$module_id])) {
        $error->set_error('no_access');
        return array('result_count' => -1, 'entry_list' => array(), 'error' => $error->get_soap_array());
    }
    $list = get_related_in_module("('" . $GLOBALS['db']->quote($module_id) . "')", $module_name, $rel_module, $order_by, $offset, $limit);
    $output_list = array();
    $field_list = array();
    foreach ($list as $value) {
        $output_list[] = get_return_value($value, $rel_module);
        $_SESSION['viewable'][$rel_module][$value->id] = $value->id;
        if (empty($field_list)) {
            $field_list = get_field_list($value, true);
        }
    }
    $output_list = filter_return_list($output_list, $select_fields, $module_name);
    $field_list = filter_field_list($field_list, $select_fields, $module_name);
    return array('result_count' => $list['result_count'], 'next_offset' => 0, 'field_list' => $field_list, 'entry_list' => $output_list, 'error' => $error->get_soap_array());
}
コード例 #4
0
ファイル: SoapSugarUsers.php プロジェクト: sunmo/snowlotus
/**
 * Given a list of modules to search and a search string, return the id, module_name, along with the fields
 * as specified in the $query_array
 *
 * @param string $user_name 		- username of the Sugar User
 * @param string $password			- password of the Sugar User
 * @param string $search_string 	- string to search
 * @param string[] $modules			- array of modules to query
 * @param int $offset				- a specified offset in the query
 * @param int $max_results			- max number of records to return
 * @return get_entry_list_result 	- id, module_name, and list of fields from each record
 */
function search_by_module($user_name, $password, $search_string, $modules, $offset, $max_results)
{
    global $beanList, $beanFiles;
    $error = new SoapError();
    $hasLoginError = false;
    if (empty($user_name) && !empty($password)) {
        if (!validate_authenticated($password)) {
            $hasLoginError = true;
        }
    } else {
        if (!validate_user($user_name, $password)) {
            $hasLoginError = true;
        }
    }
    //If there is a login error, then return the error here
    if ($hasLoginError) {
        $error->set_error('invalid_login');
        return array('result_count' => -1, 'entry_list' => array(), 'error' => $error->get_soap_array());
    }
    global $current_user;
    if ($max_results > 0) {
        global $sugar_config;
        $sugar_config['list_max_entries_per_page'] = $max_results;
    }
    //  MRF - BUG:19552 - added a join for accounts' emails below
    $query_array = array('Accounts' => array('where' => array('Accounts' => array(0 => "accounts.name like '{0}%'"), 'EmailAddresses' => array(0 => "ea.email_address like '{0}%'")), 'fields' => "accounts.id, accounts.name"), 'Bugs' => array('where' => array('Bugs' => array(0 => "bugs.name like '{0}%'", 1 => "bugs.bug_number = {0}")), 'fields' => "bugs.id, bugs.name, bugs.bug_number"), 'Cases' => array('where' => array('Cases' => array(0 => "cases.name like '{0}%'", 1 => "cases.case_number = {0}")), 'fields' => "cases.id, cases.name, cases.case_number"), 'Leads' => array('where' => array('Leads' => array(0 => "leads.first_name like '{0}%'", 1 => "leads.last_name like '{0}%'"), 'EmailAddresses' => array(0 => "ea.email_address like '{0}%'")), 'fields' => "leads.id, leads.first_name, leads.last_name, leads.status"), 'Project' => array('where' => array('Project' => array(0 => "project.name like '{0}%'")), 'fields' => "project.id, project.name"), 'ProjectTask' => array('where' => array('ProjectTask' => array(0 => "project.id = '{0}'")), 'fields' => "project_task.id, project_task.name"), 'Contacts' => array('where' => array('Contacts' => array(0 => "contacts.first_name like '{0}%'", 1 => "contacts.last_name like '{0}%'"), 'EmailAddresses' => array(0 => "ea.email_address like '{0}%'")), 'fields' => "contacts.id, contacts.first_name, contacts.last_name"), 'Opportunities' => array('where' => array('Opportunities' => array(0 => "opportunities.name like '{0}%'")), 'fields' => "opportunities.id, opportunities.name"), 'Users' => array('where' => array('EmailAddresses' => array(0 => "ea.email_address like '{0}%'")), 'fields' => "users.id, users.user_name, users.first_name, ea.email_address"));
    if (!empty($search_string) && isset($search_string)) {
        foreach ($modules as $module_name) {
            $class_name = $beanList[$module_name];
            require_once $beanFiles[$class_name];
            $seed = new $class_name();
            if (empty($beanList[$module_name])) {
                continue;
            }
            if (!check_modules_access($current_user, $module_name, 'read')) {
                continue;
            }
            if (!$seed->ACLAccess('ListView')) {
                continue;
            }
            if (isset($query_array[$module_name])) {
                $query = '';
                $tmpQuery = '';
                //split here to do while loop
                foreach ($query_array[$module_name]['where'] as $key => $value) {
                    foreach ($value as $where_clause) {
                        $addQuery = true;
                        if (!empty($query)) {
                            $tmpQuery = ' UNION ';
                        }
                        $tmpQuery .= "SELECT " . $query_array[$module_name]['fields'] . " FROM {$seed->table_name} ";
                        // We need to confirm that the user is a member of the team of the item.
                        if ($module_name == 'ProjectTask') {
                            $tmpQuery .= "INNER JOIN project ON {$seed->table_name}.project_id = project.id ";
                        }
                        if (isset($seed->emailAddress) && $key == 'EmailAddresses') {
                            $tmpQuery .= " INNER JOIN email_addr_bean_rel eabl  ON eabl.bean_id = {$seed->table_name}.id and eabl.deleted=0";
                            $tmpQuery .= " INNER JOIN email_addresses ea ON (ea.id = eabl.email_address_id) ";
                        }
                        $where = "WHERE (";
                        $search_terms = explode(", ", $search_string);
                        $termCount = count($search_terms);
                        $count = 1;
                        if ($key != 'EmailAddresses') {
                            foreach ($search_terms as $term) {
                                if (!strpos($where_clause, 'number')) {
                                    $where .= string_format($where_clause, array($GLOBALS['db']->quote($term)));
                                } elseif (is_numeric($term)) {
                                    $where .= string_format($where_clause, array($GLOBALS['db']->quote($term)));
                                } else {
                                    $addQuery = false;
                                }
                                if ($count < $termCount) {
                                    $where .= " OR ";
                                }
                                $count++;
                            }
                        } else {
                            $where .= '(';
                            foreach ($search_terms as $term) {
                                $where .= "ea.email_address LIKE '" . $GLOBALS['db']->quote($term) . "'";
                                if ($count < $termCount) {
                                    $where .= " OR ";
                                }
                                $count++;
                            }
                            $where .= ')';
                        }
                        $tmpQuery .= $where;
                        $tmpQuery .= ") AND {$seed->table_name}.deleted = 0";
                        if ($addQuery) {
                            $query .= $tmpQuery;
                        }
                    }
                }
                //grab the items from the db
                $result = $seed->db->query($query, $offset, $max_results);
                while (($row = $seed->db->fetchByAssoc($result)) != null) {
                    $list = array();
                    $fields = explode(", ", $query_array[$module_name]['fields']);
                    foreach ($fields as $field) {
                        $field_names = explode(".", $field);
                        $list[$field] = array('name' => $field_names[1], 'value' => $row[$field_names[1]]);
                    }
                    $output_list[] = array('id' => $row['id'], 'module_name' => $module_name, 'name_value_list' => $list);
                    if (empty($field_list)) {
                        $field_list = get_field_list($row);
                    }
                }
                //end while
            }
        }
        //end foreach
    }
    $next_offset = $offset + sizeof($output_list);
    return array('result_count' => sizeof($output_list), 'next_offset' => $next_offset, 'field_list' => $field_list, 'entry_list' => $output_list, 'error' => $error->get_soap_array());
}
コード例 #5
0
ファイル: index.php プロジェクト: ATCS-BCA/bca-apps
            delete_field($id);
        } else {
            if ($action == "edit") {
                $field = get_field(filter_input(INPUT_GET, "id"));
                include "edit_field.php";
                exit;
            } else {
                if ($action == "edit_field") {
                    $choice = filter_input(INPUT_POST, "choice");
                    $field_name = filter_input(INPUT_POST, "field_name");
                    $field_id = filter_input(INPUT_POST, "field_id");
                    if ($choice == "Make Changes") {
                        $error_msg = "";
                        if (empty($field_name)) {
                            $error_msg .= "A field name is required. <BR>";
                        }
                        if ($error_msg != "") {
                            include "edit_field.php";
                            exit;
                        } else {
                            modify_field($field_id, $field_name);
                        }
                    }
                }
            }
        }
    }
}
$field_list = get_field_list();
include "view.php";
exit;
コード例 #6
0
ファイル: Save.php プロジェクト: delkyd/sugarcrm_dev
 * technical reasons, the Appropriate Legal Notices must display the words
 * "Powered by SugarCRM".
 ********************************************************************************/
require_once 'soap/SoapHelperFunctions.php';
require_once 'modules/MailMerge/MailMerge.php';
global $beanList, $beanFiles;
$module = $_POST['mailmerge_module'];
$document_id = $_POST['document_id'];
$selObjs = urldecode($_POST['selected_objects_def']);
$item_ids = array();
parse_str($selObjs, $item_ids);
$class_name = $beanList[$module];
$includedir = $beanFiles[$class_name];
require_once $includedir;
$seed = new $class_name();
$fields = get_field_list($seed);
$document = new Document();
$document->retrieve($document_id);
$items = array();
foreach ($item_ids as $key => $value) {
    $seed->retrieve($key);
    $items[] = $seed;
}
ini_set('max_execution_time', 600);
ini_set('error_reporting', 'E_ALL');
$dataDir = create_cache_directory("MergedDocuments/");
$fileName = UploadFile::realpath("upload://{$document->document_revision_id}");
$outfile = pathinfo($document->filename, PATHINFO_FILENAME);
$mm = new MailMerge(null, null, $dataDir);
$mm->SetDataList($items);
$mm->SetFieldList($fields);
コード例 #7
0
function portal_get_entry_list_limited($session, $module_name, $where, $order_by, $select_fields, $row_offset, $limit)
{
    global $beanList, $beanFiles, $portal_modules;
    $error = new SoapError();
    if (!portal_validate_authenticated($session)) {
        $error->set_error('invalid_session');
        return array('result_count' => -1, 'entry_list' => array(), 'error' => $error->get_soap_array());
    }
    if ($_SESSION['type'] == 'lead') {
        $error->set_error('no_access');
        return array('result_count' => -1, 'entry_list' => array(), 'error' => $error->get_soap_array());
    }
    if (empty($beanList[$module_name])) {
        $error->set_error('no_module');
        return array('result_count' => -1, 'entry_list' => array(), 'error' => $error->get_soap_array());
    }
    if ($module_name == 'Cases') {
        //if the related cases have not yet been loaded into the session object,
        //then call the methods that will load the cases related to the contact/accounts for this user
        if (!isset($_SESSION['viewable'][$module_name])) {
            //retrieve the contact/account id's for this user
            $c = get_contacts_in();
            $a = get_accounts_in();
            if (!empty($c)) {
                get_cases_in_contacts($c);
            }
            if (!empty($a)) {
                get_cases_in_accounts($a);
            }
        }
        $sugar = BeanFactory::getBean('Cases');
        $list = array();
        //if no Cases have been loaded into the session as viewable, then do not issue query, just return empty list
        //issuing a query with no cases loaded in session will return ALL the Cases, which is not a good thing
        if (!empty($_SESSION['viewable'][$module_name])) {
            $list = get_related_list(get_module_in($module_name), BeanFactory::getBean('Cases'), $where, $order_by, $row_offset, $limit);
        }
    } else {
        if ($module_name == 'Contacts') {
            $sugar = BeanFactory::getBean('Contacts');
            $list = get_related_list(get_module_in($module_name), BeanFactory::getBean('Contacts'), $where, $order_by);
        } else {
            if ($module_name == 'Accounts') {
                $sugar = BeanFactory::getBean('Accounts');
                $list = get_related_list(get_module_in($module_name), BeanFactory::getBean('Accounts'), $where, $order_by);
            } else {
                if ($module_name == 'Bugs') {
                    //if the related bugs have not yet been loaded into the session object,
                    //then call the methods that will load the bugs related to the contact/accounts for this user
                    if (!isset($_SESSION['viewable'][$module_name])) {
                        //retrieve the contact/account id's for this user
                        $c = get_contacts_in();
                        $a = get_accounts_in();
                        if (!empty($c)) {
                            get_bugs_in_contacts($c);
                        }
                        if (!empty($a)) {
                            get_bugs_in_accounts($a);
                        }
                    }
                    $list = array();
                    //if no Bugs have been loaded into the session as viewable, then do not issue query, just return empty list
                    //issuing a query with no bugs loaded in session will return ALL the Bugs, which is not a good thing
                    if (!empty($_SESSION['viewable'][$module_name])) {
                        $list = get_related_list(get_module_in($module_name), BeanFactory::getBean('Bugs'), $where, $order_by, $row_offset, $limit);
                    }
                } else {
                    if ($module_name == 'KBDocuments') {
                        $sugar = BeanFactory::getBean('KBDocuments');
                        $sugar->disable_row_level_security = true;
                        $keywords = array();
                        //Check if there was a LIKE or = clause built.  If so, the key/value pairs
                        $where = str_replace("\\'", "<##@comma@##>", $where);
                        if (preg_match_all("/kbdocuments[\\.]([^\\s]*?)[\\s]+(LIKE|=)[\\s]+[\\'](.*?)[%][\\']/si", $where, $matches, PREG_SET_ORDER)) {
                            foreach ($matches as $match) {
                                $value = str_replace("<##@comma@##>", "\\'", $match[3]);
                                $keywords[$match[1]] = $value;
                            }
                        }
                        $where = "";
                        $result = create_portal_list_query($sugar, $order_by, $where, $keywords, $row_offset, $limit);
                        $list = array();
                        while ($row = $sugar->db->fetchByAssoc($result)) {
                            $id = $row['id'];
                            //$list[] = $id;
                            $record = BeanFactory::getBean('KBDocuments', $id, array("disable_row_level_security" => true));
                            $record->fill_in_additional_list_fields();
                            $list[] = $record;
                        }
                    } else {
                        if ($module_name == 'FAQ') {
                            $sugar = BeanFactory::getBean('KBDocuments');
                            preg_match("/kbdocuments.tags[\\s]=[\\s]+[(][\\'](.*?)[\\'][)]/si", $where, $matches);
                            //Use KBDocuments/SearchUtils.php
                            //ToDo: Set Global ID for FAQ somewhere, can't assume it's faq1
                            $list = get_faq_list($matches[1], $sugar);
                        } else {
                            $error->set_error('no_module_support');
                            return array('result_count' => -1, 'entry_list' => array(), 'error' => $error->get_soap_array());
                        }
                    }
                }
            }
        }
    }
    $output_list = array();
    $field_list = array();
    foreach ($list as $value) {
        $output_list[] = get_return_value($value, $module_name);
        $_SESSION['viewable'][$module_name][$value->id] = $value->id;
        if (empty($field_list)) {
            $field_list = get_field_list($value);
        }
    }
    $output_list = filter_return_list($output_list, $select_fields, $module_name);
    $field_list = filter_field_list($field_list, $select_fields, $module_name);
    return array('result_count' => sizeof($output_list), 'next_offset' => 0, 'field_list' => $field_list, 'entry_list' => $output_list, 'error' => $error->get_soap_array());
}
コード例 #8
0
/**
 * Enter description here...
 *
 * @param unknown_type $user_name
 * @param unknown_type $password
 * @param unknown_type $search_string
 * @param unknown_type $modules
 * @param unknown_type $offset
 * @param unknown_type $max_results
 * @return unknown
 */
function search_by_module($user_name, $password, $search_string, $modules, $offset, $max_results)
{
    global $beanList, $beanFiles;
    $error = new SoapError();
    if (!validate_user($user_name, $password)) {
        $error->set_error('invalid_login');
        return array('result_count' => -1, 'entry_list' => array(), 'error' => $error->get_soap_array());
    }
    global $current_user;
    if ($max_results > 0) {
        global $sugar_config;
        $sugar_config['list_max_entries_per_page'] = $max_results;
    }
    $query_array = array('Accounts' => array('where' => "accounts.name like '{0}%'", 'fields' => "accounts.id id, accounts.name"), 'Bugs' => array('where' => "bugs.name like '{0}%' OR bugs.bug_number = '{0}'", 'fields' => "bugs.id, bugs.name, bugs.bug_number"), 'Cases' => array('where' => "cases.name like '{0}%' OR cases.case_number = '{0}'", 'fields' => "cases.id, cases.name, cases.case_number"), 'Contacts' => array('where' => "contacts.first_name like '{0}%' OR contacts.last_name like '{0}%' OR contacts.email1 like '{0}%' OR contacts.email2 like '{0}%'", 'fields' => "contacts.id, contacts.first_name, contacts.last_name, contacts.email1"), 'Leads' => array('where' => "leads.first_name like '{0}%' OR leads.last_name like '{0}%' OR leads.email1 like '{0}%' OR leads.email2 like '{0}%'", 'fields' => "leads.id, leads.first_name, leads.last_name, leads.email1, leads.status"), 'Opportunities' => array('where' => "opportunities.name like '{0}%'", 'fields' => "opportunities.id, opportunities.name"), 'Project' => array('where' => "project.name like '{0}%'", 'fields' => "project.id, project.name"), 'ProjectTask' => array('where' => "project.id = '{0}'", 'fields' => "project_task.id, project_task.name"));
    if (!empty($search_string) && isset($search_string)) {
        foreach ($modules as $module_name) {
            $class_name = $beanList[$module_name];
            require_once $beanFiles[$class_name];
            $seed = new $class_name();
            if (empty($beanList[$module_name])) {
                continue;
            }
            if (!check_modules_access($current_user, $module_name, 'read')) {
                continue;
            }
            if (!$seed->ACLAccess('ListView')) {
                continue;
            }
            if (isset($query_array[$module_name])) {
                $query = "SELECT " . $query_array[$module_name]['fields'] . " FROM {$seed->table_name} ";
                // We need to confirm that the user is a member of the team of the item.
                if ($module_name == 'ProjectTask') {
                    $query .= "INNER JOIN project ON {$seed->table_name}.parent_id = project.id ";
                }
                $where = "WHERE (";
                $search_terms = explode(", ", $search_string);
                $termCount = count($search_terms);
                $count = 1;
                foreach ($search_terms as $term) {
                    $where .= string_format($query_array[$module_name]['where'], array($GLOBALS['db']->quote($term)));
                    if ($count < $termCount) {
                        $where .= " OR ";
                    }
                    $count++;
                }
                $query .= $where;
                $query .= ") AND {$seed->table_name}.deleted = 0";
                //grab the items from the db
                $result = $seed->db->limitQuery($query, $offset, $max_results);
                $list = array();
                if (empty($rows_found)) {
                    $rows_found = $seed->db->getRowCount($result);
                }
                //fi
                $row_offset = 0;
                while (($row = $seed->db->fetchByAssoc($result)) != null) {
                    $list = array();
                    $fields = explode(", ", $query_array[$module_name]['fields']);
                    foreach ($fields as $field) {
                        $field_names = explode(".", $field);
                        $list[$field] = array('name' => $field_names[1], 'value' => $row[$field_names[1]]);
                    }
                    $output_list[] = array('id' => $row['id'], 'module_name' => $module_name, 'name_value_list' => $list);
                    if (empty($field_list)) {
                        $field_list = get_field_list($row);
                    }
                }
                //end while
            }
        }
        //end foreach
    }
    $next_offset = $offset + sizeof($output_list);
    return array('result_count' => sizeof($output_list), 'next_offset' => $next_offset, 'field_list' => $field_list, 'entry_list' => $output_list, 'error' => $error->get_soap_array());
}
コード例 #9
0
ファイル: SoapSync.php プロジェクト: jglaine/sugar761-ent
function sync_set_entries($session, $module_name, $from_date, $to_date, $sync_entry_list, $deleted)
{
    $name = strtolower($module_name);
    $entry_list = get_decoded($sync_entry_list);
    $status = 0;
    global $beanList, $beanFiles;
    $error = new SoapError();
    if (!validate_authenticated($session)) {
        $error->set_error('invalid_login');
        return array('result_count' => -1, 'entry_list' => array(), 'error' => $error->get_soap_array());
    }
    if (empty($beanList[$module_name])) {
        $error->set_error('no_module');
        return array('result_count' => -1, 'entry_list' => array(), 'error' => $error->get_soap_array());
    }
    global $current_user;
    require_once 'modules/Sync/SyncController.php';
    if (!in_array($module_name, $read_only_override) && !check_modules_access($current_user, $module_name, 'write')) {
        $error->set_error('no_access');
        return array('result_count' => -1, 'entry_list' => array(), 'error' => $error->get_soap_array());
    }
    global $sugar_config;
    $sugar_config['list_max_entries_per_page'] = '-99';
    $conflicts = array();
    $in = '';
    $ids = array();
    foreach ($entry_list as $value) {
        $ids[$value['id']] = $value['id'];
        if ($value['resolve'] == 0) {
            if (empty($in)) {
                $in .= "('" . $GLOBALS['db']->quote($value['id']) . "'";
            } else {
                $in .= ",'" . $GLOBALS['db']->quote($value['id']) . "'";
            }
        }
    }
    $list = array();
    $output_list = array();
    $field_list = array();
    if (!empty($in)) {
        $in .= ')';
        $seed = BeanFactory::getBean($module_name);
        $table_name = $seed->table_name;
        //query for any of the records that have been modified after the fact
        $response = $seed->get_list('', "{$table_name}.date_modified > " . db_convert("'" . $GLOBALS['db']->quote($from_date) . "'", 'datetime') . " AND {$table_name}.date_modified <= " . db_convert("'" . $GLOBALS['db']->quote($to_date) . "'", 'datetime') . " AND {$table_name}.id IN {$in} ", 0, -1, -1, (int) $deleted);
        $list = $response['list'];
        foreach ($list as $value) {
            $cur = BeanFactory::getBean($module_name, $value->id);
            unset($ids[$value->id]);
            $output_list[] = get_return_value($cur, $module_name);
            if (empty($field_list)) {
                $field_list = get_field_list($value);
            }
        }
    }
    $myoutput = get_encoded($output_list);
    if (empty($list)) {
        foreach ($entry_list as $value) {
            $cur = $seed->getCleanCopy();
            foreach ($value['name_value_list'] as $name_value) {
                $cur->{$name_value}['name'] = $name_value['value'];
            }
            $temp = BeanFactory::getBean($module_name, $cur->id);
            if (empty($tmp)) {
                $cur->new_with_id = true;
            }
            if ($value['resolve'] < 1 || $cur->new_with_id) {
                $cur->update_date_modified = true;
                $cur->update_modified_by = true;
                $cur->date_modified = $to_date;
                if ($cur->deleted != 0) {
                    $cur->mark_deleted($cur->id);
                } else {
                    $cur->save();
                }
            }
        }
        $status = 'success';
    } else {
        $status = 'conflict';
    }
    return array('conflicts' => $myoutput, 'status' => $status, 'ids' => $ids, 'error' => $error->get_soap_array());
}
コード例 #10
0
ファイル: Index.php プロジェクト: ATCS-BCA/bca-apps
    if ($action == NULL) {
        $action = 'list_presentations';
    }
}
switch ($action) {
    case 'list_presentations':
        // Get the presentation list
        $presentationList = get_all_presentations();
        // View the list of presentations
        include 'presentation_list.php';
        exit;
        break;
    case 'show_modify_presentation':
        $presentation_id = filter_input(INPUT_GET, 'presentation_id');
        $presentation = SeniorPresentation::getPresentation($presentation_id);
        $fields = get_field_list();
        //$teachers = get_teachers();
        //$presentation_types = get_presentation_types();
        include '../../senior/show_modify_presentation.php';
        exit;
        break;
        /*case 'modify_presentation':
                $error_msg = '';
        
                $choice = filter_input(INPUT_POST, 'choice');
                $presentation_id = filter_input(INPUT_POST, 'presentation_id');
                $presentation_nbr = filter_input(INPUT_POST, 'presentation_nbr');
                $presentation_name = filter_input(INPUT_POST, 'presentation_name');
                $presentation_short_name = filter_input(INPUT_POST, 'presentation_short_name');
                $presentation_desc = filter_input(INPUT_POST, 'presentation_desc');
                $teacher_id = filter_input(INPUT_POST, 'teacher');
コード例 #11
0
function get_return_module_fields(&$value, $module, &$error)
{
    global $module_name;
    $module_name = $module;
    return array('module_name' => $module, 'module_fields' => get_field_list($value), 'error' => get_name_value_list($value));
}
コード例 #12
0
function portal_get_entry_list_limited($session, $module_name, $where, $order_by, $select_fields, $row_offset, $limit)
{
    global $beanList, $beanFiles, $portal_modules;
    $error = new SoapError();
    if (!portal_validate_authenticated($session)) {
        $error->set_error('invalid_session');
        return array('result_count' => -1, 'entry_list' => array(), 'error' => $error->get_soap_array());
    }
    if ($_SESSION['type'] == 'lead') {
        $error->set_error('no_access');
        return array('result_count' => -1, 'entry_list' => array(), 'error' => $error->get_soap_array());
    }
    if (empty($beanList[$module_name])) {
        $error->set_error('no_module');
        return array('result_count' => -1, 'entry_list' => array(), 'error' => $error->get_soap_array());
    }
    if ($module_name == 'Cases') {
        if (!isset($_SESSION['viewable'][$module_name])) {
            get_cases_in_contacts(get_contacts_in());
            get_cases_in_accounts(get_accounts_in());
        }
        $sugar = new aCase();
        $list = get_related_list(get_module_in($module_name), new aCase(), $where, $order_by, $row_offset, $limit);
    } else {
        if ($module_name == 'Contacts') {
            $sugar = new Contact();
            $list = get_related_list(get_module_in($module_name), new Contact(), $where, $order_by);
        } else {
            if ($module_name == 'Accounts') {
                $sugar = new Account();
                $list = get_related_list(get_module_in($module_name), new Account(), $where, $order_by);
            } else {
                if ($module_name == 'Bugs') {
                    if (!isset($_SESSION['viewable'][$module_name])) {
                        get_bugs_in_contacts(get_contacts_in());
                        get_bugs_in_accounts(get_accounts_in());
                    }
                    $list = get_related_list(get_module_in($module_name), new Bug(), $where, $order_by, $row_offset, $limit);
                } else {
                    if ($module_name == 'KBDocuments') {
                    } else {
                        if ($module_name == 'FAQ') {
                        } else {
                            $error->set_error('no_module_support');
                            return array('result_count' => -1, 'entry_list' => array(), 'error' => $error->get_soap_array());
                        }
                    }
                }
            }
        }
    }
    $output_list = array();
    $field_list = array();
    foreach ($list as $value) {
        //$loga->fatal("Adding another account to the list");
        $output_list[] = get_return_value($value, $module_name);
        $_SESSION['viewable'][$module_name][$value->id] = $value->id;
        if (empty($field_list)) {
            $field_list = get_field_list($value);
        }
    }
    $output_list = filter_return_list($output_list, $select_fields, $module_name);
    $field_list = filter_field_list($field_list, $select_fields, $module_name);
    return array('result_count' => sizeof($output_list), 'next_offset' => 0, 'field_list' => $field_list, 'entry_list' => $output_list, 'error' => $error->get_soap_array());
}
コード例 #13
0
/**
 * Retrieve vardef information on the fields of the specified bean.
 *
 * @param String $session -- Session ID returned by a previous call to login.
 * @param String $module_name -- The name of the module to return records from.  This name should be the name the module was developed under (changing a tab name is studio does not affect the name that should be passed into this method)..
 * @return Array    'module_fields' -- The vardef information on the selected fields.
 *                  'error' -- The SOAP error, if any
 */
function get_module_fields($session, $module_name)
{
    global $db;
    $error = new SoapError();
    $module_fields = array();
    if (!validate_authenticated($session)) {
        $error->set_error('invalid_session');
        return array('module_name' => $module_name, 'module_fields' => $module_fields, 'error' => $error->get_soap_array());
    }
    $AppUI =& $_SESSION['AppUI'];
    $GLOBALS['AppUI'] = $AppUI;
    $modclass = $AppUI->getModuleClass($module_name);
    if (file_exists($modclass)) {
        include_once $modclass;
    } else {
        $error->set_error('no_module');
        return array('module_name' => $module_name, 'module_fields' => $module_fields, 'error' => $error->get_soap_array());
    }
    $perms =& $AppUI->acl();
    $canAccess = $perms->checkModule($module_name, 'access');
    $canRead = $perms->checkModule($module_name, 'view');
    $canEdit = $perms->checkModule($module_name, 'edit');
    $canAuthor = $perms->checkModule($module_name, 'add');
    $canDelete = $perms->checkModule($module_name, 'delete');
    $GLOBALS['perms'] = $perms;
    if (!$canRead) {
        $error->set_error('no_access');
        return array('module_name' => $module_name, 'module_fields' => $module_fields, 'error' => $error->get_soap_array());
    }
    $module_fields = $db->MetaColumns($module_name);
    if (empty($module_fields)) {
        $error->set_error('no_records');
        return array('module_name' => $module_name, 'module_fields' => $module_fields, 'error' => $error->get_soap_array());
    }
    return array('module_name' => $module_name, 'module_fields' => get_field_list($module_fields), 'error' => $error->get_soap_array());
}