This class provides processing control methods. More...
Public Member Functions | |
| ilCtrl () | |
| control class constructor | |
| init () | |
| initialisation | |
| callBaseClass () | |
| Calls base class of current request. | |
| getModuleDir () | |
| get directory of current module | |
| & | forwardCommand (&$a_gui_object) |
| forward flow of control to next gui class this invokes the executeCommand() method of the gui object that is passed via reference | |
| & | getHTML (&$a_gui_object) |
| Gets an HTML output from another GUI class and returns the flow of control to the calling class. | |
| setContext ($a_obj_id, $a_obj_type, $a_sub_obj_id=0, $a_sub_obj_type="") | |
| Set context of current user interface. | |
| getContextObjId () | |
| Get ContextObjId. | |
| getContextObjType () | |
| Get ContextObjType. | |
| getContextSubObjId () | |
| Get ContextSubObjId. | |
| getContextSubObjType () | |
| Get ContextSubObjType. | |
| getNodeIdForTargetClass ($a_par_node, $a_class) | |
| Searchs a node for a given class ($a_class) "near" the another node ($a_par_node). | |
| getCmdNode () | |
| get command target node | |
| addLocation ($a_title, $a_link, $a_target="", $a_ref_id=0) | |
| add a location to the locator array | |
| getLocations () | |
| get locations array | |
| addTab ($a_lang_var, $a_link, $a_cmd, $a_class) | |
| add a tab to tabs array | |
| getTabs () | |
| get tabs array | |
| getCallHistory () | |
| Get controller call history. | |
| getCallStructure ($a_class, $a_nr=0, $a_parent=0) | |
| Get call structure of class context. | |
| storeCommonStructures () | |
| stores often used common call structures (called from db_update script!!!) | |
| readCallStructure ($a_class, $a_nr=0, $a_parent=0) | |
| reads call structure from db | |
| forwards ($a_from_class, $a_to_class) | |
| Stores which classes forwards commands to which other classes. | |
| saveParameter (&$a_obj, $a_parameter) | |
| Set parameters that should be passed in every form and link of a gui class. | |
| saveParameterByClass ($a_class, $a_parameter) | |
| setParameter (&$a_obj, $a_parameter, $a_value) | |
| Set parameters that should be passed a form and link of a gui class. | |
| setParameterByClass ($a_class, $a_parameter, $a_value) | |
| Same as setParameterByClass, except that a class name is passed. | |
| clearParameters (&$a_obj) | |
| Clears all parameters that have been set via setParameter for a GUI class. | |
| clearParametersByClass ($a_class) | |
| Clears all parameters that have been set via setParameter for a GUI class. | |
| getNextClass () | |
| Get next class in the control path from the current class to the target command class. | |
| lookupClassPath ($a_class_name) | |
| Get class path that can be used in include statements for a given class name. | |
| getClassForClasspath ($a_class_path) | |
| this method assumes that the class path has the format "dir/class.<class_name>.php" | |
| getPathNew ($a_source_node, $a_target_node) | |
| get path in call structure | |
| setTargetScript ($a_target_script) | |
| set target script name | |
| getTargetScript () | |
| get target script name | |
| initBaseClass ($a_base_class) | |
| initialises new base class | |
| getCmd ($a_default_cmd="") | |
| determines current get/post command | |
| setCmd ($a_cmd) | |
| set the current command | |
| setCmdClass ($a_cmd_class) | |
| set the current command class | |
| getCmdClass () | |
| determines responsible class for current command | |
| getFormAction (&$a_gui_obj, $a_fallback_cmd="") | |
| get form action url for gui class object | |
| getFormActionByClass ($a_class, $a_fallback_cmd="") | |
| get form action url for gui class name | |
| redirect (&$a_gui_obj, $a_cmd="", $a_anchor="") | |
| redirectByClass ($a_class, $a_cmd="") | |
| redirect to other gui class | |
| isAsynch () | |
| getLinkTarget (&$a_gui_obj, $a_cmd="", $a_anchor="", $a_asynch=false) | |
| get link target for (current) gui class | |
| getLinkTargetByClass ($a_class, $a_cmd="", $a_anchor="", $a_asynch=false) | |
| get link target for a target class | |
| setReturn (&$a_gui_obj, $a_cmd) | |
| set return command | |
| setReturnByClass ($a_class, $a_cmd) | |
| set return command | |
| returnToParent (&$a_gui_obj, $a_anchor="") | |
| redirects to next parent class that used setReturn | |
| getRedirectSource () | |
| get current redirect source | |
| getParentReturn (&$a_gui_obj) | |
| getParentReturnByClass ($a_class) | |
| searchReturnClass ($a_class) | |
| get current return class | |
| getUrlParameters ($a_class, $a_str, $a_cmd="", $a_transits="") | |
| appendTransitClasses ($a_str) | |
| getTransitArray () | |
| addTransit ($a_class) | |
| getParameterArray (&$a_gui_obj, $a_cmd="", $a_incl_transit=true) | |
| getParameterArrayByClass ($a_class, $a_cmd="", $a_transits="") | |
Data Fields | |
| $target_script | |
| $forward | |
| $parent | |
| $save_parameter | |
| $return | |
| $call_hist = array() | |
This class provides processing control methods.
A global instance is available via variable $ilCtrl
Definition at line 31 of file class.ilCtrl.php.
| ilCtrl::addLocation | ( | $ | a_title, | |
| $ | a_link, | |||
| $ | a_target = "", |
|||
| $ | a_ref_id = 0 | |||
| ) |
add a location to the locator array
| string | $a_title link text | |
| string | $a_link link | |
| string | $a_target target frame |
Definition at line 374 of file class.ilCtrl.php.
{
$this->location[] = array("title" => $a_title,
"link" => $a_link, "target" => $a_target, "ref_id" => $a_ref_id);
}
| ilCtrl::addTab | ( | $ | a_lang_var, | |
| $ | a_link, | |||
| $ | a_cmd, | |||
| $ | a_class | |||
| ) |
add a tab to tabs array
| string | $a_lang_var language variable | |
| string | $a_link link | |
| string | $a_cmd command (must be same as in link) | |
| string | $a_class command class (must be same as in link) |
Definition at line 398 of file class.ilCtrl.php.
{
$a_class = strtolower($a_class);
$this->tab[] = array("lang_var" => $a_lang_var,
"link" => $a_link, "cmd" => $a_cmd, "class" => $a_class);
}
| ilCtrl::addTransit | ( | $ | a_class | ) |
Definition at line 1177 of file class.ilCtrl.php.
References $_GET.
{
$a_class = strtolower($a_class);
$_GET["cmdTransit"][] = $a_class;
}
| ilCtrl::appendTransitClasses | ( | $ | a_str | ) |
Definition at line 1150 of file class.ilCtrl.php.
References $_GET, and ilUtil::appendUrlParameterString().
{
if (is_array($_GET["cmdTransit"]))
{
reset($_GET["cmdTransit"]);
foreach ($_GET["cmdTransit"] as $transit)
{
$a_str = ilUtil::appendUrlParameterString($a_str, "cmdTransit[]=".$transit);
}
}
return $a_str;
}
Here is the call graph for this function:| ilCtrl::callBaseClass | ( | ) |
Calls base class of current request.
The base class is passed via $_GET["baseClass"] and is the first class in the call sequence of the request. Do not call this method within other scripts than ilias.php.
public
Definition at line 89 of file class.ilCtrl.php.
References $_GET, exit, forwardCommand(), and getCallStructure().
{
global $ilDB;
$baseClass = strtolower($_GET["baseClass"]);
// get class information
$q = "SELECT * FROM module_class WHERE LOWER(class) = ".
$ilDB->quote($baseClass);
$mc_set = $ilDB->query($q);
$mc_rec = $mc_set->fetchRow(DB_FETCHMODE_ASSOC);
$module = $mc_rec["module"];
$class = $mc_rec["class"];
$class_dir = $mc_rec["dir"];
if ($module != "")
{
// get module information
$q = "SELECT * FROM module WHERE name = ".
$ilDB->quote($module);
$m_set = $ilDB->query($q);
$m_rec = $m_set->fetchRow(DB_FETCHMODE_ASSOC);
$this->module_dir = $m_rec["dir"];
include_once $this->module_dir."/".$class_dir."/class.".$class.".php";
}
else // check whether class belongs to a service
{
// get class information
$q = "SELECT * FROM service_class WHERE LOWER(class) = ".
$ilDB->quote($baseClass);
$mc_set = $ilDB->query($q);
$mc_rec = $mc_set->fetchRow(DB_FETCHMODE_ASSOC);
$service = $mc_rec["service"];
$class = $mc_rec["class"];
$class_dir = $mc_rec["dir"];
if ($service == "")
{
echo "Could not find entry in modules.xml or services.xml for".
$baseClass;
exit;
}
// get service information
$q = "SELECT * FROM service WHERE name = ".
$ilDB->quote($service);
$m_set = $ilDB->query($q);
$m_rec = $m_set->fetchRow(DB_FETCHMODE_ASSOC);
$this->service_dir = $m_rec["dir"];
include_once $this->service_dir."/".$class_dir."/class.".$class.".php";;
}
// forward processing to base class
$this->getCallStructure(strtolower($baseClass));
$base_class_gui =& new $class();
$this->forwardCommand($base_class_gui);
}
Here is the call graph for this function:| ilCtrl::clearParameters | ( | &$ | a_obj | ) |
Clears all parameters that have been set via setParameter for a GUI class.
| object | $a_obj gui object |
Definition at line 675 of file class.ilCtrl.php.
References clearParametersByClass().
{
$this->clearParametersByClass(strtolower(get_class($a_obj)));
}
Here is the call graph for this function:| ilCtrl::clearParametersByClass | ( | $ | a_class | ) |
Clears all parameters that have been set via setParameter for a GUI class.
| string | $a_class gui class name |
Definition at line 686 of file class.ilCtrl.php.
Referenced by clearParameters().
{
$this->parameter[strtolower($a_class)] = array();
}
Here is the caller graph for this function:| & ilCtrl::forwardCommand | ( | &$ | a_gui_object | ) |
forward flow of control to next gui class this invokes the executeCommand() method of the gui object that is passed via reference
| object | $a_gui_object gui object that should receive the flow of control public |
Definition at line 170 of file class.ilCtrl.php.
References exit, and getNodeIdForTargetClass().
Referenced by callBaseClass().
{
$class = strtolower(get_class($a_gui_object));
//echo "<br>forwarding to: -$class-";
$nr = $this->getNodeIdForTargetClass($this->current_node, $class);
if ($nr > 0)
{
$current_node = $this->current_node;
$this->current_node = $nr;
if (DEVMODE == "1")
{
$this->call_hist[] = get_class($a_gui_object);
}
$html = $a_gui_object->executeCommand();
// reset current node
$this->current_node = $current_node;
return $html;
}
echo "ERROR: Can't forward to class $class."; exit;
//echo "end forward<br>";
}
Here is the call graph for this function:
Here is the caller graph for this function:| ilCtrl::forwards | ( | $ | a_from_class, | |
| $ | a_to_class | |||
| ) |
Stores which classes forwards commands to which other classes.
| string | $a_from_class source class name | |
| string | $a_to_class target class name |
private
Definition at line 564 of file class.ilCtrl.php.
Referenced by init(), and readCallStructure().
{
$a_from_class = strtolower($a_from_class);
if (is_array($a_to_class))
{
foreach($a_to_class as $to_class)
{
$this->forward[$a_from_class][] = strtolower($to_class);
$this->parent[strtolower($to_class)][] = $a_from_class;
}
}
else
{
$this->forward[strtolower(get_class($a_obj))][] = strtolower($a_to_class);
$this->parent[strtolower($a_to_class)][] = strtolower(get_class($a_obj));
}
}
Here is the caller graph for this function:| ilCtrl::getCallHistory | ( | ) |
Get controller call history.
Definition at line 419 of file class.ilCtrl.php.
{
return $this->call_hist;
}
| ilCtrl::getCallStructure | ( | $ | a_class, | |
| $ | a_nr = 0, |
|||
| $ | a_parent = 0 | |||
| ) |
Get call structure of class context.
This method must be called for the top level gui class in the leading php script. It must be called before the the current command is forwarded to the top level gui class. Example:
include_once "classes/class.ilRepositoryGUI.php"; $ilCtrl->setTargetScript("repository.php"); $ilCtrl->getCallStructure("ilrepositorygui"); $repository_gui =& new ilRepositoryGUI(); $ilCtrl->forwardCommand($repository_gui);
| string | $a_class gui class name | |
| int | $a_nr internal counter (don't pass a value here) | |
| int | $a_parent internal counter (don't pass a value here) |
public
Definition at line 442 of file class.ilCtrl.php.
References $_GET, $ilLog, readCallStructure(), redirect(), and ilUtil::sendInfo().
Referenced by callBaseClass().
{
global $ilDB, $ilLog, $ilUser;
$a_class = strtolower($a_class);
if (in_array($a_class, $this->stored_trees))
{
$q = "SELECT * FROM ctrl_structure WHERE root_class = ".
$ilDB->quote($a_class);
$set = $ilDB->query($q);
$rec = $set->fetchRow(DB_FETCHMODE_ASSOC);
$this->call_node = unserialize($rec["call_node"]);
$this->forward = unserialize($rec["forward"]);
$this->parent = unserialize($rec["parent"]);
$this->root_class = $a_class;
}
else
{
$this->readCallStructure($a_class, $a_nr, $a_parent);
}
// check whether command node and command class fit together
if ($_GET["cmdNode"] > 0)
{
if (strtolower($this->call_node[$_GET["cmdNode"]]["class"]) !=
strtolower($_GET["cmdClass"]))
{
if (DEVMODE)
{
die ("Internal Error: ilCtrl Node Error.");
}
else
{
if (is_object($ilLog))
{
if (is_object($ilUser))
{
$user_str = "User: ".$ilUser->getLogin()." (".$ilUser->getId()."), ";
}
$ilLog->write("Invalid Request (class ilCtrl). Possible attack or Control Structure broken (see Setup). ".
$user_str."IP: ".$_SERVER["REMOTE_ADDR"].", URI: ".$_SERVER["REQUEST_URI"]);
}
ilUtil::sendInfo("Sorry, but the request includes invalid parameters." ,true);
ilUtil::redirect("repository.php?cmd=frameset");
}
}
}
}
Here is the call graph for this function:
Here is the caller graph for this function:| ilCtrl::getClassForClasspath | ( | $ | a_class_path | ) |
this method assumes that the class path has the format "dir/class.<class_name>.php"
| string | $a_class_path class path public |
Definition at line 751 of file class.ilCtrl.php.
References $file.
| ilCtrl::getCmd | ( | $ | a_default_cmd = "" |
) |
determines current get/post command
Definition at line 844 of file class.ilCtrl.php.
{
$cmd = $_GET["cmd"];
if($cmd == "post")
{
if (is_array($_POST["cmd"]))
{
reset($_POST["cmd"]);
}
$cmd = @key($_POST["cmd"]);
if($cmd == "" && isset($_POST["select_cmd"])) // selected command in multi-list (table2)
{
$cmd = $_POST["selected_cmd"];
}
if($cmd == "")
{
$cmd = $_GET["fallbackCmd"];
}
}
if($cmd == "")
{
$cmd = $a_default_cmd;
}
return $cmd;
}
| ilCtrl::getCmdClass | ( | ) |
determines responsible class for current command
Definition at line 906 of file class.ilCtrl.php.
References $_GET.
{
return strtolower($_GET["cmdClass"]);
}
| ilCtrl::getCmdNode | ( | ) |
get command target node
Definition at line 362 of file class.ilCtrl.php.
References $_GET.
Referenced by getNextClass().
{
return $_GET["cmdNode"];
}
Here is the caller graph for this function:| ilCtrl::getContextObjId | ( | ) |
Get ContextObjId.
Definition at line 252 of file class.ilCtrl.php.
{
return $this->context_obj_id;
}
| ilCtrl::getContextObjType | ( | ) |
Get ContextObjType.
Definition at line 262 of file class.ilCtrl.php.
{
return $this->context_obj_type;
}
| ilCtrl::getContextSubObjId | ( | ) |
Get ContextSubObjId.
Definition at line 272 of file class.ilCtrl.php.
{
return $this->context_sub_obj_id;
}
| ilCtrl::getContextSubObjType | ( | ) |
Get ContextSubObjType.
Definition at line 282 of file class.ilCtrl.php.
{
return $this->context_sub_obj_type;
}
| ilCtrl::getFormAction | ( | &$ | a_gui_obj, | |
| $ | a_fallback_cmd = "" | |||
| ) |
get form action url for gui class object
| object | $a_gui_obj gui object |
Definition at line 916 of file class.ilCtrl.php.
References getFormActionByClass().
{
$script = $this->getFormActionByClass(strtolower(get_class($a_gui_obj)),
$a_fallback_cmd);
return $script;
}
Here is the call graph for this function:| ilCtrl::getFormActionByClass | ( | $ | a_class, | |
| $ | a_fallback_cmd = "" | |||
| ) |
get form action url for gui class name
| string | $a_class gui class name |
Definition at line 928 of file class.ilCtrl.php.
References ilUtil::appendUrlParameterString(), and getLinkTargetByClass().
Referenced by getFormAction().
{
$a_class = strtolower($a_class);
$script = $this->getLinkTargetByClass($a_class, "post");
if ($a_fallback_cmd != "")
{
$script = ilUtil::appendUrlParameterString($script, "fallbackCmd=".$a_fallback_cmd);
}
return $script;
}
Here is the call graph for this function:
Here is the caller graph for this function:| & ilCtrl::getHTML | ( | &$ | a_gui_object | ) |
Gets an HTML output from another GUI class and returns the flow of control to the calling class.
| object | $a_gui_object gui object that returns the HTML block public |
Definition at line 207 of file class.ilCtrl.php.
References exit, and getNodeIdForTargetClass().
{
$class = strtolower(get_class($a_gui_object));
$nr = $this->getNodeIdForTargetClass($this->current_node, $class);
if ($nr > 0)
{
$current_node = $this->current_node;
// set current node to new gui class
$this->current_node = $nr;
if (DEVMODE == "1")
{
$this->call_hist[] = get_class($a_gui_object);
}
// get block
$html = $a_gui_object->getHTML();
// reset current node
$this->current_node = $current_node;
// return block
return $html;
}
echo "ERROR: Can't getHTML from class $class."; exit;
}
Here is the call graph for this function:| ilCtrl::getLinkTarget | ( | &$ | a_gui_obj, | |
| $ | a_cmd = "", |
|||
| $ | a_anchor = "", |
|||
| $ | a_asynch = false | |||
| ) |
get link target for (current) gui class
| object | $a_gui_obj (current) gui object (usually $this) | |
| string | $a_cmd command |
Definition at line 996 of file class.ilCtrl.php.
References getLinkTargetByClass().
{
//echo "<br>getLinkTarget";
$script = $this->getLinkTargetByClass(strtolower(get_class($a_gui_obj)), $a_cmd, $a_anchor, $a_asynch);
return $script;
}
Here is the call graph for this function:| ilCtrl::getLinkTargetByClass | ( | $ | a_class, | |
| $ | a_cmd = "", |
|||
| $ | a_anchor = "", |
|||
| $ | a_asynch = false | |||
| ) |
get link target for a target class
| string | $a_class command target class | |
| string | $a_cmd command | |
| array | $a_transits transit classes (deprecated) |
Definition at line 1013 of file class.ilCtrl.php.
References getTargetScript(), and getUrlParameters().
Referenced by getFormActionByClass(), getLinkTarget(), redirect(), and redirectByClass().
{
// note: $a_class may be an array
//$a_class = strtolower($a_class);
//echo "<br>getLinkTargetByClass";
$script = $this->getTargetScript();
$script = $this->getUrlParameters($a_class, $script, $a_cmd);
if ($a_asynch)
{
$script.= "&cmdMode=asynch";
}
if ($a_anchor != "")
{
$script = $script."#".$a_anchor;
}
return $script;
}
Here is the call graph for this function:
Here is the caller graph for this function:| ilCtrl::getLocations | ( | ) |
get locations array
Definition at line 385 of file class.ilCtrl.php.
{
return $this->location;
}
| ilCtrl::getModuleDir | ( | ) |
get directory of current module
Definition at line 154 of file class.ilCtrl.php.
{
return $this->module_dir;
}
| ilCtrl::getNextClass | ( | ) |
Get next class in the control path from the current class to the target command class.
This is the class that should be instantiated and be invoked via $ilCtrl->forwardCommand($class) next.
Definition at line 699 of file class.ilCtrl.php.
References getCmdNode(), and getPathNew().
{
//echo "getNextClass:";
$cmdNode = $this->getCmdNode();
if ($cmdNode == "")
{
return false;
}
else
{
if ($this->current_node == $cmdNode)
{
//echo "1:".$this->call_node[$cmdNode]["class"]."<br>";
//return $this->call_node[$cmdNode]["class"];
return "";
}
else
{
$path = $this->getPathNew($this->current_node, $cmdNode);
//echo "2:".$this->call_node[$path[1]]["class"]."<br>";
return $this->call_node[$path[1]]["class"];
}
}
}
Here is the call graph for this function:| ilCtrl::getNodeIdForTargetClass | ( | $ | a_par_node, | |
| $ | a_class | |||
| ) |
Searchs a node for a given class ($a_class) "near" the another node ($a_par_node).
It first looks if the given class is a child class of the current node. If such a child node has been found, its id is returned.
If not, this method determines wether the given class is a sibling of the current node within the call structure. If this is the case then the corresponding id is returned.
At last the methode searchs for the given class along the path from the current node to the root class of the call structure.
| $a_par_node | id of starting node for the search | |
| $a_class | class that should be searched |
private
Definition at line 308 of file class.ilCtrl.php.
References exit.
Referenced by forwardCommand(), getHTML(), getParameterArrayByClass(), searchReturnClass(), and setCmdClass().
{
$class = strtolower($a_class);
// target class is class of current node id
if ($class == $this->call_node[$a_par_node]["class"])
{
return $a_par_node;
}
// target class is child of current node id
foreach($this->call_node as $nr => $node)
{
if (($node["parent"] == $a_par_node) &&
($node["class"] == $class))
{
return $nr;
}
}
// target class is sibling
$par = $this->call_node[$a_par_node]["parent"];
if ($par != 0)
{
foreach($this->call_node as $nr => $node)
{
if (($node["parent"] == $par) &&
($node["class"] == $class))
{
return $nr;
}
}
}
// target class is parent
while($par != 0)
{
if ($this->call_node[$par]["class"] == $class)
{
return $par;
}
$par = $this->call_node[$par]["parent"];
}
echo "ERROR: Can't find target class $a_class for node $a_par_node ".
"(".$this->call_node[$a_par_node]["class"].").<br>";
exit;
}
Here is the caller graph for this function:| ilCtrl::getParameterArray | ( | &$ | a_gui_obj, | |
| $ | a_cmd = "", |
|||
| $ | a_incl_transit = true | |||
| ) |
Definition at line 1183 of file class.ilCtrl.php.
References getParameterArrayByClass().
{
$par_arr = $this->getParameterArrayByClass(strtolower(get_class($a_gui_obj)), $a_cmd,
$trans_arr);
return $par_arr;
}
Here is the call graph for this function:| ilCtrl::getParameterArrayByClass | ( | $ | a_class, | |
| $ | a_cmd = "", |
|||
| $ | a_transits = "" | |||
| ) |
Definition at line 1194 of file class.ilCtrl.php.
References $_GET, getNodeIdForTargetClass(), and getPathNew().
Referenced by getParameterArray(), and getUrlParameters().
{
//echo "<br>getparameter for $a_class";
if ($a_class == "")
{
return array();
}
if (!is_array($a_class))
{
$a_class = array($a_class);
}
$nr = $this->current_node;
foreach ($a_class as $class)
{
//echo "<br>-$class-";
$class = strtolower($class);
$nr = $this->getNodeIdForTargetClass($nr, $class);
$target_class = $class;
//echo "-$nr-";
}
$path = $this->getPathNew(1, $nr);
$params = array();
// append parameters of parent classes
foreach($path as $node_id)
{
$class = $this->call_node[$node_id]["class"];
if (is_array($this->save_parameter[$class]))
{
foreach($this->save_parameter[$class] as $par)
{
$params[$par] = $_GET[$par];
}
}
if (is_array($this->parameter[$class]))
{
foreach($this->parameter[$class] as $par => $value)
{
$params[$par] = $value;
}
}
}
if ($a_cmd != "")
{
$params["cmd"] = $a_cmd;
}
$params["cmdClass"] = $target_class;
$params["cmdNode"] = $nr;
$params["baseClass"] = $_GET["baseClass"];
return $params;
}
Here is the call graph for this function:
Here is the caller graph for this function:| ilCtrl::getParentReturn | ( | &$ | a_gui_obj | ) |
Definition at line 1090 of file class.ilCtrl.php.
References getParentReturnByClass().
Referenced by returnToParent().
{
return $this->getParentReturnByClass(strtolower(get_class($a_gui_obj)));
}
Here is the call graph for this function:
Here is the caller graph for this function:| ilCtrl::getParentReturnByClass | ( | $ | a_class | ) |
Definition at line 1096 of file class.ilCtrl.php.
References searchReturnClass().
Referenced by getParentReturn().
{
$a_class = strtolower($a_class);
$ret_class = $this->searchReturnClass($a_class);
//echo ":$ret_class:";
if($ret_class)
{
//echo ":".$this->return[$ret_class].":";
return $this->return[$ret_class];
}
}
Here is the call graph for this function:
Here is the caller graph for this function:| ilCtrl::getPathNew | ( | $ | a_source_node, | |
| $ | a_target_node | |||
| ) |
get path in call structure
| string | $a_source_node source node id | |
| string | $a_source_node target node id |
private
Definition at line 768 of file class.ilCtrl.php.
References exit.
Referenced by getNextClass(), getParameterArrayByClass(), and searchReturnClass().
{
//echo "-".$a_source_node."-";
$path_rev = array();
$c_target = $a_target_node;
while ($a_source_node != $c_target)
{
$path_rev[] = $c_target;
$c_target = $this->call_node[$c_target]["parent"];
if(!($c_target > 0))
{
echo "ERROR: Path not found. Source:".$a_source_node.
" (".$this->call_node[$a_source_node]["class"].")".
", Target:".$a_target_node.
" (".$this->call_node[$a_target_node]["class"].")";
exit;
}
}
if ($a_source_node == $c_target)
{
$path_rev[] = $c_target;
}
$path = array();
for ($i=0; $i<count($path_rev); $i++)
{
$path[] = $path_rev[count($path_rev) - ($i + 1)];
}
foreach($path as $node)
{
//echo "<br>-->".$node.":".$this->call_node[$node]["class"];
}
return $path;
}
Here is the caller graph for this function:| ilCtrl::getRedirectSource | ( | ) |
get current redirect source
Definition at line 1082 of file class.ilCtrl.php.
References $_GET.
{
return $_GET["redirectSource"];
}
| ilCtrl::getTabs | ( | ) |
get tabs array
Definition at line 411 of file class.ilCtrl.php.
{
return $this->tab;
}
| ilCtrl::getTargetScript | ( | ) |
get target script name
Definition at line 820 of file class.ilCtrl.php.
Referenced by getLinkTargetByClass(), setReturn(), and setReturnByClass().
{
return $this->target_script;
}
Here is the caller graph for this function:| ilCtrl::getTransitArray | ( | ) |
| ilCtrl::getUrlParameters | ( | $ | a_class, | |
| $ | a_str, | |||
| $ | a_cmd = "", |
|||
| $ | a_transits = "" | |||
| ) |
Definition at line 1132 of file class.ilCtrl.php.
References ilUtil::appendUrlParameterString(), and getParameterArrayByClass().
Referenced by getLinkTargetByClass(), setReturn(), and setReturnByClass().
{
// note: $a_class may be an array!
//$a_class = strtolower($a_class);
$params = $this->getParameterArrayByClass($a_class, $a_cmd, $a_transits);
foreach ($params as $par => $value)
{
if (strlen($value))
{
$a_str = ilUtil::appendUrlParameterString($a_str, $par."=".$value);
}
}
return $a_str;
}
Here is the call graph for this function:
Here is the caller graph for this function:| ilCtrl::ilCtrl | ( | ) |
control class constructor
Definition at line 43 of file class.ilCtrl.php.
References $ilBench, and init().
{
global $ilBench;
$this->bench =& $ilBench;
// initialisation
$this->init();
// this information should go to xml files one day
$this->stored_trees = array
("ilrepositorygui", "ilpersonaldesktopgui",
"illmpresentationgui", "illmeditorgui",
"iladministrationgui");
}
Here is the call graph for this function:| ilCtrl::init | ( | ) |
initialisation
Definition at line 62 of file class.ilCtrl.php.
References forwards().
Referenced by ilCtrl(), and initBaseClass().
{
$this->transit = array();
$this->forward = array(); // forward array
$this->forwards = array(); // forward array
$this->parent = array(); // parent array (reverse forward)
$this->save_parameter = array(); // save parameter array
$this->parameter = array(); // save parameter array
$this->return = ""; // return commmands
$this->location = array();
$this->tab = array();
$this->current_node = 0;
$this->module_dir = "";
$this->service_dir = "";
$this->call_node = array();
$this->root_class = "";
}
Here is the call graph for this function:
Here is the caller graph for this function:| ilCtrl::initBaseClass | ( | $ | a_base_class | ) |
initialises new base class
Note: this resets the whole current ilCtrl context completely. You can call setTargetScript() and callBaseClass() after that.
Definition at line 832 of file class.ilCtrl.php.
{
$_GET["baseClass"] = $a_base_class;
$_GET["cmd"] = "";
$_GET["cmdClass"] = "";
$_GET["cmdNode"] = "";
$this->init();
}
Here is the call graph for this function:| ilCtrl::isAsynch | ( | ) |
Definition at line 975 of file class.ilCtrl.php.
References $_GET.
{
if ($_GET["cmdMode"] == "asynch")
{
return true;
}
else
{
return false;
}
}
| ilCtrl::lookupClassPath | ( | $ | a_class_name | ) |
Get class path that can be used in include statements for a given class name.
| string | $a_class_name class name |
Definition at line 730 of file class.ilCtrl.php.
{
global $ilDB;
$a_class_name = strtolower($a_class_name);
$q = "SELECT * FROM ctrl_classfile WHERE class = ".$ilDB->quote($a_class_name);
$class_set = $ilDB->query($q);
$class_rec = $class_set->fetchRow(DB_FETCHMODE_ASSOC);
return $class_rec["file"];
}
| ilCtrl::readCallStructure | ( | $ | a_class, | |
| $ | a_nr = 0, |
|||
| $ | a_parent = 0 | |||
| ) |
reads call structure from db
Definition at line 521 of file class.ilCtrl.php.
References forwards().
Referenced by getCallStructure(), and storeCommonStructures().
{
global $ilDB;
$a_class = strtolower($a_class);
$a_nr++;
// determine call node structure
$this->call_node[$a_nr] = array("class" => $a_class, "parent" => $a_parent);
//echo "<br>nr:$a_nr:class:$a_class:parent:$a_parent:";
$q = "SELECT * FROM ctrl_calls WHERE parent=".
$ilDB->quote(strtolower($a_class)).
" ORDER BY child";
$call_set = $ilDB->query($q);
//$forw = array();
$a_parent = $a_nr;
while($call_rec = $call_set->fetchRow(DB_FETCHMODE_ASSOC))
{
$a_nr = $this->readCallStructure($call_rec["child"], $a_nr, $a_parent);
$forw[] = $call_rec["child"];
}
// determin forward and parent array
$this->forwards($a_class, $forw);
//echo "<br>forwards:".$a_class."<br>"; var_dump($forw);
// determine root class
$this->root_class = $a_class;
return $a_nr;
}
Here is the call graph for this function:
Here is the caller graph for this function:| ilCtrl::redirect | ( | &$ | a_gui_obj, | |
| $ | a_cmd = "", |
|||
| $ | a_anchor = "" | |||
| ) |
Definition at line 940 of file class.ilCtrl.php.
References $ilBench, and getLinkTargetByClass().
Referenced by getCallStructure(), redirectByClass(), and returnToParent().
{
global $ilBench;
//echo "<br>class:".get_class($a_gui_obj).":";
$script = $this->getLinkTargetByClass(strtolower(get_class($a_gui_obj)), $a_cmd);
if (is_object($ilBench))
{
$ilBench->save();
}
if ($a_anchor != "")
{
$script = $script."#".$a_anchor;
}
ilUtil::redirect($script);
}
Here is the call graph for this function:
Here is the caller graph for this function:| ilCtrl::redirectByClass | ( | $ | a_class, | |
| $ | a_cmd = "" | |||
| ) |
redirect to other gui class
| string | $a_class command target class | |
| string | $a_cmd command |
Definition at line 964 of file class.ilCtrl.php.
References getLinkTargetByClass(), and redirect().
{
// $a_class may be an array
//$a_class = strtolower($a_class);
//echo "<br>class:".get_class($a_gui_obj).":";
$script = $this->getLinkTargetByClass($a_class, $a_cmd);
//echo "<br>script:$script:";
ilUtil::redirect($script);
}
Here is the call graph for this function:| ilCtrl::returnToParent | ( | &$ | a_gui_obj, | |
| $ | a_anchor = "" | |||
| ) |
redirects to next parent class that used setReturn
Definition at line 1063 of file class.ilCtrl.php.
References ilUtil::appendUrlParameterString(), getParentReturn(), and redirect().
{
$script = $this->getParentReturn($a_gui_obj);
$script = ilUtil::appendUrlParameterString($script,
"redirectSource=".strtolower(get_class($a_gui_obj)));
if ($a_anchor != "")
{
$script = $script."#".$a_anchor;
}
ilUtil::redirect($script);
}
Here is the call graph for this function:| ilCtrl::saveParameter | ( | &$ | a_obj, | |
| $ | a_parameter | |||
| ) |
Set parameters that should be passed in every form and link of a gui class.
All links that relate to the specified gui object class and are build e.g. by using getLinkTarger() or getFormAction() will include this parameter. This is the mechanism to add url parameters to the standard url (which is set by the setTargetScript() method) target everytime.
A typical example is the "ref_id" that should be included in almost every link or form action url. So the constructor of ilRepositoryGUI includes the command:
$this->ctrl->saveParameter($this, array("ref_id"));
| object | $a_obj gui object that will process the parameter | |
| mixed | $a_parameter parameter name (string) or array of parameter names |
public
Definition at line 603 of file class.ilCtrl.php.
References saveParameterByClass().
{
$this->saveParameterByClass(get_class($a_obj), $a_parameter);
}
Here is the call graph for this function:| ilCtrl::saveParameterByClass | ( | $ | a_class, | |
| $ | a_parameter | |||
| ) |
Definition at line 608 of file class.ilCtrl.php.
Referenced by saveParameter().
{
if (is_array($a_parameter))
{
foreach($a_parameter as $parameter)
{
$this->save_parameter[strtolower($a_class)][] = $parameter;
}
}
else
{
$this->save_parameter[strtolower($a_class)][] = $a_parameter;
}
}
Here is the caller graph for this function:| ilCtrl::searchReturnClass | ( | $ | a_class | ) |
get current return class
Definition at line 1111 of file class.ilCtrl.php.
References getNodeIdForTargetClass(), and getPathNew().
Referenced by getParentReturnByClass().
{
//echo "<br>searchReturnClass".$a_class;
$a_class = strtolower($a_class);
$nr = $this->getNodeIdForTargetClass($this->current_node, $a_class);
$path = $this->getPathNew(1, $nr);
//var_dump($path);
for($i = count($path)-2; $i>=0; $i--)
{
//echo "<br>:$i:".$path[$i].":".$this->call_node[$path[$i]]["class"]
// .":".$this->return[$this->call_node[$path[$i]]["class"]].":";
if ($this->return[$this->call_node[$path[$i]]["class"]] != "")
{
return $this->call_node[$path[$i]]["class"];
}
}
return false;
}
Here is the call graph for this function:
Here is the caller graph for this function:| ilCtrl::setCmd | ( | $ | a_cmd | ) |
set the current command
IMPORTANT NOTE:
please use this function only in exceptional cases it is not intended for setting commands in forms or links! use the corresponding parameters of getFormAction() and getLinkTarget() instead.
Definition at line 880 of file class.ilCtrl.php.
References $_GET.
{
$_GET["cmd"] = $a_cmd;
}
| ilCtrl::setCmdClass | ( | $ | a_cmd_class | ) |
set the current command class
IMPORTANT NOTE:
please use this function only in exceptional cases it is not intended for setting the command class in forms or links! use the corresponding parameters of getFormAction() and getLinkTarget() instead.
Definition at line 895 of file class.ilCtrl.php.
References $_GET, and getNodeIdForTargetClass().
{
$a_cmd_class = strtolower($a_cmd_class);
$nr = $this->getNodeIdForTargetClass($this->current_node, $a_cmd_class);
$_GET["cmdClass"] = $a_cmd_class;
$_GET["cmdNode"] = $nr;
}
Here is the call graph for this function:| ilCtrl::setContext | ( | $ | a_obj_id, | |
| $ | a_obj_type, | |||
| $ | a_sub_obj_id = 0, |
|||
| $ | a_sub_obj_type = "" | |||
| ) |
Set context of current user interface.
Definition at line 239 of file class.ilCtrl.php.
{
$this->context_obj_id = $a_obj_id;
$this->context_obj_type = $a_obj_type;
$this->context_sub_obj_id = $a_sub_obj_id;
$this->context_sub_obj_type = $a_sub_obj_type;
}
| ilCtrl::setParameter | ( | &$ | a_obj, | |
| $ | a_parameter, | |||
| $ | a_value | |||
| ) |
Set parameters that should be passed a form and link of a gui class.
All links that relate to the specified gui object class and are build e.g. by using getLinkTarger() or getFormAction() will include this parameter. This is the mechanism to add url parameters to the standard url (which is set by the setTargetScript() method) target. The difference to the saveParameter() method is, that setParameter() does not simply forward the url parameter of the last request. You can set a spefific value.
If this parameter is also a "saved parameter" (set by saveParameter() method) the saved value will be overwritten.
The method is usually used in conjunction with a getFormAction() or getLinkTarget() call. E.g.:
$this->ctrl->setParameter($this, "obj_id", $data_row["obj_id"]); $obj_link = $this->ctrl->getLinkTarget($this, "view");
| object | $a_obj gui object | |
| string | $a_parameter parameter name | |
| string | $a_parameter parameter value |
public
Definition at line 648 of file class.ilCtrl.php.
{
$this->parameter[strtolower(get_class($a_obj))][$a_parameter] = $a_value;
}
| ilCtrl::setParameterByClass | ( | $ | a_class, | |
| $ | a_parameter, | |||
| $ | a_value | |||
| ) |
Same as setParameterByClass, except that a class name is passed.
| string | $a_class gui class name | |
| string | $a_parameter parameter name | |
| string | $a_parameter parameter value |
public
Definition at line 663 of file class.ilCtrl.php.
{
$this->parameter[strtolower($a_class)][$a_parameter] = $a_value;
}
| ilCtrl::setReturn | ( | &$ | a_gui_obj, | |
| $ | a_cmd | |||
| ) |
set return command
Definition at line 1038 of file class.ilCtrl.php.
References getTargetScript(), and getUrlParameters().
{
$script = $this->getTargetScript();
$script = $this->getUrlParameters(strtolower(get_class($a_gui_obj)), $script, $a_cmd);
//echo "<br>setReturn:".get_class($a_gui_obj).":".$script.":<br>";
$this->return[strtolower(get_class($a_gui_obj))] = $script;
}
Here is the call graph for this function:| ilCtrl::setReturnByClass | ( | $ | a_class, | |
| $ | a_cmd | |||
| ) |
set return command
Definition at line 1049 of file class.ilCtrl.php.
References getTargetScript(), and getUrlParameters().
{
// may not be an array!
$a_class = strtolower($a_class);
$script = $this->getTargetScript();
$script = $this->getUrlParameters($a_class, $script, $a_cmd);
//echo "<br>setReturn:".get_class($a_gui_obj).":".$script.":<br>";
$this->return[strtolower($a_class)] = $script;
}
Here is the call graph for this function:| ilCtrl::setTargetScript | ( | $ | a_target_script | ) |
set target script name
| string | $a_target_script target script name |
Definition at line 809 of file class.ilCtrl.php.
{
$this->target_script = $a_target_script;
}
| ilCtrl::storeCommonStructures | ( | ) |
stores often used common call structures (called from db_update script!!!)
Definition at line 496 of file class.ilCtrl.php.
References readCallStructure().
{
global $ilDB;
$q = "DELETE FROM ctrl_structure";
$ilDB->query($q);
foreach ($this->stored_trees as $root_gui_class)
{
$this->call_node = array();
$this->forward = array();
$this->parent = array();
$this->readCallStructure($root_gui_class);
$q = "INSERT INTO ctrl_structure (root_class, call_node, forward, parent) VALUES (".
$ilDB->quote($root_gui_class).",".
$ilDB->quote(serialize($this->call_node)).",".
$ilDB->quote(serialize($this->forward)).",".
$ilDB->quote(serialize($this->parent)).")";
$ilDB->query($q);
}
}
Here is the call graph for this function:| ilCtrl::$call_hist = array() |
Definition at line 38 of file class.ilCtrl.php.
| ilCtrl::$forward |
Definition at line 34 of file class.ilCtrl.php.
| ilCtrl::$parent |
Definition at line 35 of file class.ilCtrl.php.
| ilCtrl::$return |
Definition at line 37 of file class.ilCtrl.php.
| ilCtrl::$save_parameter |
Definition at line 36 of file class.ilCtrl.php.
| ilCtrl::$target_script |
Definition at line 33 of file class.ilCtrl.php.
1.7.1