ICompletionContext context = getContext();
if (!(context instanceof GlobalMethodStatementContext)) {
return;
}
GlobalMethodStatementContext concreteContext = (GlobalMethodStatementContext) context;
CompletionRequestor requestor = concreteContext
.getCompletionRequestor();
String prefix = concreteContext.getPrefix();
String suffix = getSuffix(concreteContext);
SourceRange replaceRange = null;
if (suffix.equals("")) { //$NON-NLS-1$
replaceRange = getReplacementRange(concreteContext);
} else {
replaceRange = getReplacementRangeWithBraces(concreteContext);
}
replaceRange = getReplacementRange(context);
IMethod enclosingMethod = concreteContext.getEnclosingMethod();
// complete class variable: $this
if (!PHPFlags.isStatic(enclosingMethod.getFlags())) {
IType declaringType = enclosingMethod.getDeclaringType();
if (declaringType != null) {
if (THIS.startsWith(prefix)) { //$NON-NLS-1$
reporter.reportField(new FakeField(
(ModelElement) declaringType, THIS, 0, 0), suffix,
replaceRange, false,
ICompletionReporter.RELEVANCE_ADJUST); //NON-NLS-1 //$NON-NLS-2$
}
} else {
if (enclosingMethod.getParent() instanceof IField
&& concreteContext.getPhpVersion().isGreaterThan(
PHPVersion.PHP5_3)) {
IMethod method = (IMethod) enclosingMethod.getParent()
.getAncestor(IModelElement.METHOD);
if (method != null) {
declaringType = method.getDeclaringType();
if (declaringType != null && THIS.startsWith(prefix)) { //$NON-NLS-1$
reporter.reportField(new FakeField(
(ModelElement) declaringType, THIS, 0, 0),
suffix, replaceRange, false,
ICompletionReporter.RELEVANCE_ADJUST); //NON-NLS-1 //$NON-NLS-2$
}
}
}
}
}
for (IModelElement element : PHPModelUtils.getMethodFields(
enclosingMethod, prefix, requestor.isContextInformationMode(),
null)) {
reporter.reportField((IField) element, "", replaceRange, false, //$NON-NLS-1$
ICompletionReporter.RELEVANCE_ADJUST);
}
PHPVersion phpVersion = concreteContext.getPhpVersion();
for (String variable : PHPVariables.getVariables(phpVersion)) {
if (variable.startsWith(prefix)) {
if (!requestor.isContextInformationMode()
|| variable.length() == prefix.length()) {
reporter.reportField(new FakeField(
(ModelElement) concreteContext.getSourceModule(),
variable, 0, 0), "", replaceRange, false, //$NON-NLS-1$
-ICompletionReporter.RELEVANCE_ADJUST); // NON-NLS-1
}
}
}