public static function get_companys($search = false) { if (self::$get_companys_cache !== false) { return self::$get_companys_cache; } $where = 'WHERE 1'; $sql = "SELECT c.*, c.company_id AS id "; $sql .= " FROM `" . _DB_PREFIX . "company` c "; $company_access = self::get_company_data_access(); switch ($company_access) { case _COMPANY_ACCESS_ALL: break; case _COMPANY_ACCESS_ASSIGNED: // we only want companies that are directly linked with the currently logged in user contact (from the staff user account settings area) $sql .= " LEFT JOIN `" . _DB_PREFIX . "company_user_rel` cur ON c.company_id = cur.company_id "; $where .= " AND (cur.user_id = " . (int) module_security::get_loggedin_id() . ")"; break; case _COMPANY_ACCESS_CONTACT: // only parent company of current user account contact $sql .= " LEFT JOIN `" . _DB_PREFIX . "company_customer` cc ON c.company_id = cc.company_id "; $sql .= " LEFT JOIN `" . _DB_PREFIX . "user` u ON cc.customer_id = u.customer_id "; $sql .= " LEFT JOIN `" . _DB_PREFIX . "company_vendor` cv ON c.company_id = cv.company_id "; $sql .= " LEFT JOIN `" . _DB_PREFIX . "user` uv ON cv.vendor_id = uv.vendor_id "; $where .= " AND (u.user_id = " . (int) module_security::get_loggedin_id() . " OR uv.user_id = " . (int) module_security::get_loggedin_id() . ")"; break; } $sql .= $where; $sql .= " GROUP BY c.company_id "; self::$get_companys_cache = qa($sql); return self::$get_companys_cache; }