/** * Check is current admin is authorized to access the current page * */ private function isAuthorized() { if (!in_array($this->_generic->getGenericScontrollerName(),$this->_publicActions)) { // Logged if (SLS_BoRights::isLogged()) { // Authorized if (SLS_BoRights::isAuthorized("","",$this->_generic->getActionId())) { if ($this->_async) { $this->_render["logged"] = "true"; $this->_render["authorized"] = "true"; } } // Not authorized else { if ($this->_async) { $this->_render["logged"] = "true"; $this->_render["errors"][] = $GLOBALS[$GLOBALS['PROJECT_NAME']]['JS']['SLS_E_AUTHORIZED']; echo json_encode($this->_render); die(); } else { $this->_generic->forward($this->_boController,"BoDashBoard"); } } } // Not logged else { if ($this->_async) { $this->_render["logged"] = "false"; $this->_render["errors"][] = $GLOBALS[$GLOBALS['PROJECT_NAME']]['JS']['SLS_E_LOGGED']; echo json_encode($this->_render); die(); } else { $redirect = array("Redirect" => $this->_generic->getActionId()); $params = $this->_http->getParams(); unset($params["mode"]); unset($params["smode"]); $query = http_build_query($params,"","/"); $query = str_replace(array("%5B","%5D","=/","="),array("[","]","=|sls_empty|/","/"),preg_replace('/%5B[0-9]+%5D/simU', '%5B%5D', $query)); if (SLS_String::endsWith(trim($query),"/")) $query = SLS_String::substrBeforeLastDelimiter(trim($query),"/"); if (!empty($query)) $query = $query.((count(explode("/",$query))%2 != 0) ? "/sls_empty" : ""); $query = str_replace("/","|",$query); if (!empty($query)) $redirect["RedirectMore"] = trim($query); $this->_generic->forward($this->_boController,"BoLogin",$redirect); } } } }
public function getXML() { # Objects $className = ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($this->_table); $this->_generic->useModel(SLS_String::tableToClass($this->_table),ucfirst(strtolower($this->_db_alias)),"user"); $this->_object = new $className(); $this->_table = $this->_object->getTable(); $this->_langsValues = array(); if ($this->_object->isMultilanguage()) { $this->_object->setModelLanguage($this->_lang->getLang()); foreach($this->_langs as $lang) $this->_langsValues[$lang] = array(); } else $this->_langsValues[$this->_defaultLang] = array(); $this->_boPath = "//sls_configs/entry[@type='table' and @name='".strtolower($className)."']"; $boExists = $this->_xmlBo->getTag($this->_boPath); if (empty($boExists)) $this->_boPath = "//sls_configs/entry/entry[@type='table' and @name='".strtolower($className)."']"; $this->_db->changeDb($this->_db_alias); $redirects = array("list","add","edit"); # /Objects # Model comment $this->_tableComment = $this->_object->getTableComment($this->_table,$this->_db_alias); if (SLS_String::startsWith($this->_tableComment,"sls:lang:")) { $key = strtoupper(SLS_String::substrAfterFirstDelimiter($this->_tableComment,"sls:lang:")); $this->_tableComment = (empty($GLOBALS[$GLOBALS['PROJECT_NAME']]['XSL'][$key])) ? (empty($GLOBALS[$GLOBALS['PROJECT_NAME']]['JS'][$key]) ? $this->_table : $GLOBALS[$GLOBALS['PROJECT_NAME']]['JS'][$key]) : $GLOBALS[$GLOBALS['PROJECT_NAME']]['XSL'][$key]; } if (empty($this->_tableComment)) $this->_tableComment = $this->_table; # /Model comment # Params $this->_object_id = $this->_http->getParam("id"); # /Params # Columns definitions $this->_columns = array(); $this->_bearers = array(); $this->_children = array(); // Model exists ? if ($this->_object->getModel($this->_object_id) === false) $this->_generic->forward($this->_boController,"List".ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($this->_table)); // Columns $this->_columns = $this->getTableColumns($this->_db_alias,$this->_table,$this->_boPath,"",true); // Existing model $modelDatas = $this->_object->searchModels($this->_table,array(),array(0=>array("column"=>$this->_object->getPrimaryKey(),"value"=>$this->_object_id,"mode"=>"equal")),array(),array($this->_object->getPrimaryKey()=>"ASC")); for($i=0 ; $i<$count=count($modelDatas) ; $i++) { $lang = ($this->_object->isMultilanguage()) ? $modelDatas[$i]->pk_lang : $this->_defaultLang; foreach($modelDatas[$i] as $modelKey => $modelValue) { // If pk_lang if (in_array($modelKey,array("pk_lang"))) continue; // Files if (!empty($modelValue) && $this->_columns[$modelKey]["html_type"] == 'input_file') $modelValue = SLS_String::getUrlFile($modelValue); // MySQL Type Set if (!empty($modelValue) && $this->_columns[$modelKey]["html_type"] == 'input_checkbox') $modelValue = explode(",",$modelValue); // Fk if (!empty($modelValue) && $this->_columns[$modelKey]["html_type"] == 'input_ac') { $fkAlias = ucfirst(strtolower(SLS_String::substrBeforeFirstDelimiter($this->_columns[$modelKey]["ac_fk"],"_"))); $fkModel = SLS_String::tableToClass(SLS_String::substrAfterFirstDelimiter($this->_columns[$modelKey]["ac_fk"],"_")); $fkClass = $fkAlias."_".$fkModel; $this->_generic->useModel($fkModel,$fkAlias,"user"); $fkObject = new $fkClass(); if ($fkObject->getModel($modelValue) == true) { $replacements = $fkObject->getParams(); $fkLabel = $this->_columns[$modelKey]["ac_pattern"]; foreach($replacements as $keyFk => $valueFk) $fkLabel = str_replace($keyFk, $valueFk, $fkLabel); $this->_columns[$modelKey]["values"][$lang][] = array("label" => $fkLabel, "value" => $modelValue); } else $this->_columns[$modelKey]["values"][$lang][] = ""; } else { if (!empty($modelValue) && $this->_columns[$modelKey]["html_type"] == 'input_checkbox') $this->_columns[$modelKey]["values"][$lang] = $modelValue; else { if ($this->_columns[$modelKey]["html_type"] == 'input_password') $this->_columns[$modelKey]["values"][$lang][] = ""; else $this->_columns[$modelKey]["values"][$lang][] = $modelValue; } } } } // Bearers $bearers = $this->_xmlBearer->getTagsAttributes("//sls_configs/entry[@table1='".$className."']",array("tableBearer","table2")); if (!empty($bearers)) { for($i=0 ; $i<$count=count($bearers) ; $i++) { $bearerDb = ucfirst(SLS_String::substrBeforeFirstDelimiter($bearers[$i]["attributes"][0]["value"],"_")); $bearerTable = SLS_String::substrAfterFirstDelimiter($bearers[$i]["attributes"][0]["value"],"_"); $bearerClass = $bearers[$i]["attributes"][0]["value"]; $bearerTargetDb = ucfirst(SLS_String::substrBeforeFirstDelimiter($bearers[$i]["attributes"][1]["value"],"_")); $bearerTargetUse = SLS_String::substrAfterFirstDelimiter($bearers[$i]["attributes"][1]["value"],"_"); $bearerTargetClass = $bearers[$i]["attributes"][1]["value"]; $this->_generic->useModel($bearerTable,$bearerDb,"user"); $this->_generic->useModel($bearerTargetUse,$bearerTargetDb,"user"); $bearerObject = new $bearerClass(); $bearerTargetObject = new $bearerTargetClass(); $bearerTargetPk = $bearerTargetObject->getPrimaryKey(); $resultFk = array_shift($this->_xmlFk->getTagsAttribute("//sls_configs/entry[@tableFk='".strtolower($bearerClass)."' and @columnFk='".$bearerTargetObject->getPrimaryKey()."' and @tablePk = '".strtolower($bearerTargetDb)."_".$bearerTargetUse."']","labelPk")); $labelFk = (empty($resultFk)) ? $bearerTargetObject->getPrimaryKey() : $resultFk["attribute"]; $labelFkReal = $labelFk; $str = $labelFk; $values = array(); $masks = array(); foreach($bearerTargetObject->getParams() as $key => $value) array_push($masks,$key); foreach($bearerTargetObject->getParams() as $key => $value) if (SLS_String::contains($labelFk,$key)) $labelFk = str_replace($key,$bearerTargetObject->getColumnComment($key),$labelFk); $this->_bearers[$bearerObject->getTable()] = array("table" => $bearerObject->getTable(), "name" => $bearerTargetPk, "label" => $bearerObject->getTableComment($bearerObject->getTable(),$bearerDb), "multilanguage" => "false", "native_type" => "int", "html_type" => "input_ac", "specific_type" => "", "specific_type_extended" => "", "file_uid" => uniqid(), "image_ratio" => "*", "image_min_width" => "*", "image_min_height" => "*", "html" => "false", "choices" => array(), "values" => array(), "errors" => array(), "required" => "false", "unique" => "false", "default" => "", "ac_db" => strtolower($bearerDb), "ac_entity" => strtolower($bearerTable), "ac_fk" => $bearerTargetClass, "ac_column" => $bearerTargetPk, "ac_label" => $labelFk, "ac_pattern" => $labelFkReal, "ac_multiple" => "true", "min_length" => "", "max_length" => "", "filters" => ""); // Existing bearers $columnFkSource = $this->_xmlFk->getTag("//sls_configs/entry[@tableFk='".strtolower($bearerClass)."' and @tablePk = '".$this->_db_alias."_".SLS_String::tableToClass($this->_table)."']/@columnFk"); $columnFkTarget = $this->_xmlFk->getTag("//sls_configs/entry[@tableFk='".strtolower($bearerClass)."' and @tablePk = '".$this->_db_alias."_".SLS_String::tableToClass(SLS_String::substrAfterFirstDelimiter($bearerTargetClass,"_"))."']/@columnFk"); $clause = array(0=>array("column"=>$bearerObject->getTable().".".$columnFkSource,"value"=>$this->_object_id,"mode"=>"equal")); if ($bearerTargetObject->isMultilanguage()) $clause[] = array("column"=>$bearerTargetObject->getTable().".pk_lang","value" => $this->_defaultLang,"mode"=>"equal"); $bearerRecordsets = $bearerObject->searchModels($bearerObject->getTable(),array(0=>array("table"=>$bearerTargetObject->getTable(),"column"=>$columnFkTarget,"mode"=>"inner")),$clause,array(),array($bearerObject->getPrimaryKey()=>"ASC")); for($j=0 ; $j<$countJ=count($bearerRecordsets) ; $j++) { $bearerLabel = $labelFkReal; foreach($bearerRecordsets[$j] as $keyBearer => $valueBearer) $bearerLabel = str_replace($keyBearer, $valueBearer, $bearerLabel); $this->_bearers[$bearerObject->getTable()]["values"][] = array("label" => $bearerLabel, "value" => $bearerRecordsets[$j]->{$bearerTargetObject->getPrimaryKey()}); } } } // Children $children = $this->_xmlBo->getTagsAttributes($this->_boPath."/children/child",array("table","column")); for($i=0 ; $i<$count=count($children) ; $i++) { $childTable = SLS_String::substrAfterFirstDelimiter($children[$i]["attributes"][0]["value"],"_"); $childDb = ucfirst(strtolower(SLS_String::substrBeforeFirstDelimiter($children[$i]["attributes"][0]["value"],"_"))); if ($this->_db->tableExists($childTable)) { $this->_generic->useModel(SLS_String::tableToClass($childTable),$childDb,"user"); $childClassName = $childDb."_".SLS_String::tableToClass($childTable); $childObject = new $childClassName(); $childPath = "//sls_configs/entry[@type='table' and @name='".strtolower($childClassName)."']"; $childExists = $this->_xmlBo->getTag($childPath); if (empty($childExists)) $childPath = "//sls_configs/entry/entry[@type='table' and @name='".strtolower($childClassName)."']"; $childComment = $this->_object->getTableComment($childTable,$this->_db_alias); if (SLS_String::startsWith($childComment,"sls:lang:")) { $key = strtoupper(SLS_String::substrAfterFirstDelimiter($childComment,"sls:lang:")); $childComment = (empty($GLOBALS[$GLOBALS['PROJECT_NAME']]['XSL'][$key])) ? (empty($GLOBALS[$GLOBALS['PROJECT_NAME']]['JS'][$key]) ? $childTable : $GLOBALS[$GLOBALS['PROJECT_NAME']]['JS'][$key]) : $GLOBALS[$GLOBALS['PROJECT_NAME']]['XSL'][$key]; } if (empty($childComment)) $childComment = $childTable; $this->_children[$childTable] = array("model" => array("db" => strtolower($childDb), "table" => $childTable, "label" => $childComment, "nbChildren" => 0, "multilanguage" => ($childObject->isMultilanguage()) ? "true" : "false", "pk" => $childObject->getPrimaryKey()), "urls" => array("list" => array("url" => ($this->_generic->getActionId($this->_boController,"List".ucfirst(strtolower($childDb))."_".SLS_String::tableToClass($childTable)) != null) ? $this->_generic->getFullPath($this->_boController,"List".ucfirst(strtolower($childDb))."_".SLS_String::tableToClass($childTable),array(),true) : "", "authorized" => (SLS_BoRights::isAuthorized("read",ucfirst(strtolower($childDb))."_".SLS_String::tableToClass($childTable))) ? "true" : "false"), "add" => array("url" => ($this->_generic->getActionId($this->_boController,"Add".ucfirst(strtolower($childDb))."_".SLS_String::tableToClass($childTable)) != null) ? $this->_generic->getFullPath($this->_boController,"Add".ucfirst(strtolower($childDb))."_".SLS_String::tableToClass($childTable),array(),true) : "", "authorized" => (SLS_BoRights::isAuthorized("add",ucfirst(strtolower($childDb))."_".SLS_String::tableToClass($childTable))) ? "true" : "false"), "populate" => array("url" => ($this->_generic->getActionId($this->_boController,"BoPopulate".ucfirst(strtolower($childDb))."_".SLS_String::tableToClass($childTable)) != null) ? $this->_generic->getFullPath($this->_boController,"Populate".ucfirst(strtolower($childDb))."_".SLS_String::tableToClass($childTable),array(),true) : "", "authorized" => (SLS_BoRights::getAdminType() == "developer") ? "true" : "false"), "edit" => array("url" => ($this->_generic->getActionId($this->_boController,"Modify".ucfirst(strtolower($childDb))."_".SLS_String::tableToClass($childTable)) != null) ? $this->_generic->getFullPath($this->_boController,"Modify".ucfirst(strtolower($childDb))."_".SLS_String::tableToClass($childTable),array("id"=>""),false) : "", "authorized" => (SLS_BoRights::isAuthorized("edit",ucfirst(strtolower($childDb))."_".SLS_String::tableToClass($childTable))) ? "true" : "false"), "clone" => array("url" => ($this->_generic->getActionId($this->_boController,"Clone".ucfirst(strtolower($childDb))."_".SLS_String::tableToClass($childTable)) != null) ? $this->_generic->getFullPath($this->_boController,"Clone".ucfirst(strtolower($childDb))."_".SLS_String::tableToClass($childTable),array("id"=>""),false) : "", "authorized" => (SLS_BoRights::isAuthorized("clone",ucfirst(strtolower($childDb))."_".SLS_String::tableToClass($childTable))) ? "true" : "false"), "delete" => array("url" => ($this->_generic->getActionId($this->_boController,"Delete".ucfirst(strtolower($childDb))."_".SLS_String::tableToClass($childTable)) != null) ? $this->_generic->getFullPath($this->_boController,"Delete".ucfirst(strtolower($childDb))."_".SLS_String::tableToClass($childTable),array("id"=>""),false) : "", "authorized" => (SLS_BoRights::isAuthorized("delete",ucfirst(strtolower($childDb))."_".SLS_String::tableToClass($childTable))) ? "true" : "false")), "columns" => $this->getTableColumns($this->_db_alias,$childTable,$childPath,$className,true), "bearers" => array()); // Existing children $columnFk = $this->_xmlFk->getTag("//sls_configs/entry[@tableFk='".strtolower($childClassName)."' and @tablePk = '".$this->_db_alias."_".SLS_String::tableToClass($this->_table)."']/@columnFk"); $childrenRecordsets = $childObject->searchModels($childObject->getTable(),array(),array(0=>array("column"=>$columnFk,"value"=>$this->_object_id,"mode"=>"equal")),array(),array($childObject->getPrimaryKey()=>"ASC")); $this->_children[$childTable]["model"]["nbChildren"] = ($childObject->isMultilanguage()) ? count($childrenRecordsets) / count($this->_langs) : count($childrenRecordsets); $childrenIds = array(); for($j=0 ; $j<$countJ=count($childrenRecordsets) ; $j++) { $lang = ($childObject->isMultilanguage()) ? $childrenRecordsets[$j]->pk_lang : $this->_defaultLang; if (!in_array($childrenRecordsets[$j]->{$childObject->getPrimaryKey()},$childrenIds)) $childrenIds[] = $childrenRecordsets[$j]->{$childObject->getPrimaryKey()}; $childrenItem = array_shift(array_keys($childrenIds,$childrenRecordsets[$j]->{$childObject->getPrimaryKey()})); foreach($childrenRecordsets[$j] as $childRecordKey => $childRecordValue) { // If pk_lang or current father fk, skip if (in_array($childRecordKey,array("pk_lang",$columnFk))) continue; // Files if (!empty($childRecordValue) && $this->_children[$childTable]["columns"][$childRecordKey]["html_type"] == 'input_file') $childRecordValue = SLS_String::getUrlFile($childRecordValue); // MySQL Type Set if (!empty($childRecordValue) && $this->_children[$childTable]["columns"][$childRecordKey]["html_type"] == 'input_checkbox') $childRecordValue = explode(",",$childRecordValue); // Fk if (!empty($childRecordValue) && $this->_children[$childTable]["columns"][$childRecordKey]["html_type"] == 'input_ac') { $fkAlias = ucfirst(strtolower(SLS_String::substrBeforeFirstDelimiter($this->_children[$childTable]["columns"][$childRecordKey]["ac_fk"],"_"))); $fkModel = SLS_String::tableToClass(SLS_String::substrAfterFirstDelimiter($this->_children[$childTable]["columns"][$childRecordKey]["ac_fk"],"_")); $fkClass = $fkAlias."_".$fkModel; $this->_generic->useModel($fkModel,$fkAlias,"user"); $fkObject = new $fkClass(); if ($fkObject->getModel($childRecordValue) == true) { $replacements = $fkObject->getParams(); $fkLabel = $this->_children[$childTable]["columns"][$childRecordKey]["ac_pattern"]; foreach($replacements as $keyFk => $valueFk) $fkLabel = str_replace($keyFk, $valueFk, $fkLabel); $this->_children[$childTable]["columns"][$childRecordKey]["values"][$childrenItem][$lang][] = array("label" => $fkLabel, "value" => $childRecordValue); } else $this->_children[$childTable]["columns"][$childRecordKey]["values"][$childrenItem][$lang][] = ""; } else { if (!empty($childRecordValue) && $this->_children[$childTable]["columns"][$childRecordKey]["html_type"] == 'input_checkbox') $this->_children[$childTable]["columns"][$childRecordKey]["values"][$childrenItem][$lang] = $childRecordValue; else $this->_children[$childTable]["columns"][$childRecordKey]["values"][$childrenItem][$lang][] = $childRecordValue; } } } // Bearers $bearers = $this->_xmlBearer->getTagsAttributes("//sls_configs/entry[@table1='".$childClassName."']",array("tableBearer","table2")); if (!empty($bearers)) { for($i=0 ; $i<$count=count($bearers) ; $i++) { $bearerDb = ucfirst(SLS_String::substrBeforeFirstDelimiter($bearers[$i]["attributes"][0]["value"],"_")); $bearerTable = SLS_String::substrAfterFirstDelimiter($bearers[$i]["attributes"][0]["value"],"_"); $bearerClass = $bearers[$i]["attributes"][0]["value"]; $bearerTargetDb = ucfirst(SLS_String::substrBeforeFirstDelimiter($bearers[$i]["attributes"][1]["value"],"_")); $bearerTargetUse = SLS_String::substrAfterFirstDelimiter($bearers[$i]["attributes"][1]["value"],"_"); $bearerTargetClass = $bearers[$i]["attributes"][1]["value"]; $this->_generic->useModel($bearerTable,$bearerDb,"user"); $this->_generic->useModel($bearerTargetUse,$bearerTargetDb,"user"); $bearerObject = new $bearerClass(); $bearerTargetObject = new $bearerTargetClass(); $bearerTargetPk = $bearerTargetObject->getPrimaryKey(); $resultFk = array_shift($this->_xmlFk->getTagsAttribute("//sls_configs/entry[@tableFk='".strtolower($bearerClass)."' and @columnFk='".$bearerTargetObject->getPrimaryKey()."' and @tablePk = '".strtolower($bearerTargetDb)."_".$bearerTargetUse."']","labelPk")); $labelFk = (empty($resultFk)) ? $bearerTargetObject->getPrimaryKey() : $resultFk["attribute"]; $labelFkReal = $labelFk; $str = $labelFk; $values = array(); $masks = array(); foreach($bearerTargetObject->getParams() as $key => $value) array_push($masks,$key); foreach($bearerTargetObject->getParams() as $key => $value) if (SLS_String::contains($labelFk,$key)) $labelFk = str_replace($key,$bearerTargetObject->getColumnComment($key),$labelFk); $this->_children[$childTable]["bearers"][$bearerObject->getTable()] = array("table" => $bearerObject->getTable(), "name" => $bearerTargetPk, "label" => $bearerObject->getTableComment($bearerObject->getTable(),$bearerDb), "multilanguage" => "false", "native_type" => "int", "html_type" => "input_ac", "specific_type" => "", "specific_type_extended" => "", "file_uid" => uniqid(), "image_ratio" => "*", "image_min_width" => "*", "image_min_height" => "*", "html" => "false", "choices" => array(), "values" => array(), "errors" => array(), "required" => "false", "unique" => "false", "default" => "", "ac_db" => strtolower($bearerDb), "ac_entity" => strtolower($bearerTable), "ac_fk" => $bearerTargetClass, "ac_column" => $bearerTargetPk, "ac_label" => $labelFk, "ac_pattern" => $labelFkReal, "ac_multiple" => "true", "min_length" => "", "max_length" => "", "filters" => ""); $columnFkSource = $this->_xmlFk->getTag("//sls_configs/entry[@tableFk='".strtolower($bearerClass)."' and @tablePk = '".$this->_db_alias."_".SLS_String::tableToClass($childObject->getTable())."']/@columnFk"); $columnFkTarget = $this->_xmlFk->getTag("//sls_configs/entry[@tableFk='".strtolower($bearerClass)."' and @tablePk = '".$this->_db_alias."_".SLS_String::tableToClass(SLS_String::substrAfterFirstDelimiter($bearerTargetClass,"_"))."']/@columnFk"); $clause = (!empty($childrenIds)) ? array(0=>array("column"=>$bearerObject->getTable().".".$columnFkSource,"value"=>$childrenIds,"mode"=>"in")) : array(); if ($bearerTargetObject->isMultilanguage()) $clause[] = array("column"=>$bearerTargetObject->getTable().".pk_lang","value" => $this->_defaultLang,"mode"=>"equal"); $bearerRecordsets = $bearerObject->searchModels($bearerObject->getTable(),array(0=>array("table"=>$bearerTargetObject->getTable(),"column"=>$columnFkTarget,"mode"=>"inner")),$clause,array(),array($bearerObject->getPrimaryKey()=>"ASC")); for($j=0 ; $j<$countJ=count($bearerRecordsets) ; $j++) { $bearerLabel = $labelFkReal; foreach($bearerRecordsets[$j] as $keyBearer => $valueBearer) $bearerLabel = str_replace($keyBearer, $valueBearer, $bearerLabel); $this->_children[$childTable]["bearers"][$bearerObject->getTable()]["values"][array_shift(array_keys($childrenIds,$bearerRecordsets[$j]->{$columnFkSource}))][] = array("label" => $bearerLabel, "value" => $bearerRecordsets[$j]->{$bearerTargetObject->getPrimaryKey()}); } } } } } # /Columns definitions # Reload $this->_error = false; $this->_recordsets = array(); if ($this->_http->getParam("reload-edit") == "true") { $modelParams = (is_array($this->_http->getParam($this->_table))) ? $this->_http->getParam($this->_table) : array(); $properties = (is_array($modelParams["properties"])) ? $modelParams["properties"] : array(); $bearers = (is_array($modelParams["bearers"])) ? $modelParams["bearers"] : array(); $children = (is_array($modelParams["children"])) ? $modelParams["children"] : array(); $childrenToDelete = (is_array($modelParams["children-to-delete"])) ? $modelParams["children-to-delete"] : array(); $redirect = (in_array(strtolower($this->_http->getParam("redirect")),$redirects)) ? strtolower($this->_http->getParam("redirect")) : array_shift($redirects); # MAIN MODEL uksort($properties,array($this, 'unshiftDefaultLang')); foreach($properties as $lang => $columns) { $this->_object->setModelLanguage($lang); if (!empty($columns)) { foreach(((is_array($columns)) ? $columns : array($columns)) as $column => $value) { // Reset old value $this->_columns[$column]["values"][$lang] = array(); $functionName = "set".SLS_String::fullTrim(ucwords(SLS_String::stringToUrl(str_replace("_"," ",$column)," ",false)),""); // Remember values if (is_array($value) && array_key_exists("file",$value)) { $value = $value["file"]; if (!is_array($value)) $value = SLS_String::substrAfterFirstDelimiter($value,$this->_generic->getPathConfig("files")); } else if (is_array($value)) { $this->_columns[$column]["values"][$lang] = $value; // MySQL Type Set if ($this->_columns[$column]["specific_type"] != 'file') $value = implode(",",$value); } else { // Check FK if (!empty($value) && $this->_columns[$column]["html_type"] == 'input_ac') { $fkAlias = ucfirst(strtolower(SLS_String::substrBeforeFirstDelimiter($this->_columns[$column]["ac_fk"],"_"))); $fkModel = SLS_String::tableToClass(SLS_String::substrAfterFirstDelimiter($this->_columns[$column]["ac_fk"],"_")); $fkClass = $fkAlias."_".$fkModel; $this->_generic->useModel($fkModel,$fkAlias,"user"); $fkObject = new $fkClass(); if ($fkObject->getModel($value) == true) { $replacements = $fkObject->getParams(); $fkLabel = $this->_columns[$column]["ac_pattern"]; foreach($replacements as $keyFk => $valueFk) $fkLabel = str_replace($keyFk, $valueFk, $fkLabel); $this->_columns[$column]["values"][$lang][] = array("label" => $fkLabel, "value" => $value); } else $this->_columns[$column]["values"][$lang][] = ""; } else $this->_columns[$column]["values"][$lang][] = $value; } // Setter if (!$this->_object->$functionName($value)) { $this->_error = true; $this->_columns[$column]["errors"][$lang] = $this->_object->getError($column); if ($this->_async) $this->_render["errors"][$column] = $this->_columns[$column]["label"]." ".$GLOBALS[$GLOBALS['PROJECT_NAME']]['JS']['SLS_'.strtoupper($this->_columns[$column]["errors"][$lang])]; } // Remember value type file if ($this->_columns[$column]["html_type"] == 'input_file') { // No error, take model value if (empty($this->_columns[$column]["errors"][$lang])) { $fileValue = $this->_object->__get($column); $this->_columns[$column]["values"][$lang][] = (!empty($fileValue)) ? SLS_String::getUrlFile($fileValue) : ""; } // Else, take uploaded file else { // Modern browsers if (array_key_exists("data",$value)) $value = $value["data"]; if (is_array($value) && array_key_exists("tmp_name",$value)) $this->_columns[$column]["values"][$lang][] = $this->_generic->getSiteConfig("protocol")."://".$this->_generic->getSiteConfig("domainName")."/".$value["tmp_name"]; } } } } $this->_object->save(); } # /MAIN MODEL # CHILDREN foreach($children as $childTable => $childValues) { $this->_generic->useModel(SLS_String::tableToClass($childTable),$this->_db_alias,"user"); $childClassName = $this->_db_alias."_".SLS_String::tableToClass($childTable); $childObject = new $childClassName(); $this->_recordsets[$childTable]["pk"] = $childObject->getPrimaryKey(); $this->_children[$childTable]["model"]["nbChildren"] = (is_array($childValues)) ? count($childValues) : 1; foreach(((is_array($childValues)) ? $childValues : array($childValues)) as $childItem => $infos) { // Child $properties = (is_array($infos["properties"])) ? $infos["properties"] : array($infos["properties"]); uksort($properties,array($this, 'unshiftDefaultLang')); $childId = $properties[$this->_defaultLang][$childObject->getPrimaryKey()]; $needToCreate = (empty($childId)) ? true : false; if ($needToCreate) $this->_recordsets[$childTable]["ids"][] = $childId = $childObject->giveNextId(); foreach($properties as $lang => $columns) { $childObject->setModelLanguage($lang); if (!$needToCreate) $childObject->getModel($childId); foreach(((is_array($columns)) ? $columns : array($columns)) as $column => $value) { // Exclude pk if existed (update) if ($column == $this->_recordsets[$childTable]["pk"]) continue; $functionName = "set".SLS_String::fullTrim(ucwords(SLS_String::stringToUrl(str_replace("_"," ",$column)," ",false)),""); // Remember values if (is_array($value) && array_key_exists("file",$value)) { $value = $value["file"]; if (!is_array($value)) $value = SLS_String::substrAfterFirstDelimiter($value,$this->_generic->getPathConfig("files")); } else if (is_array($value)) { $this->_children[$childTable]["columns"][$column]["values"][$childItem][$lang] = $value; // MySQL Type Set if ($this->_children[$childTable]["columns"][$column]["specific_type"] != 'file') $value = implode(",",$value); } else { // Check FK if (!empty($value) && $this->_children[$childTable]["columns"][$column]["html_type"] == 'input_ac') { $fkAlias = ucfirst(strtolower(SLS_String::substrBeforeFirstDelimiter($this->_children[$childTable]["columns"][$column]["ac_fk"],"_"))); $fkModel = SLS_String::tableToClass(SLS_String::substrAfterFirstDelimiter($this->_children[$childTable]["columns"][$column]["ac_fk"],"_")); $fkClass = $fkAlias."_".$fkModel; $this->_generic->useModel($fkModel,$fkAlias,"user"); $fkObject = new $fkClass(); if ($fkObject->getModel($value) == true) { $replacements = $fkObject->getParams(); $fkLabel = $this->_children[$childTable]["columns"][$column]["ac_pattern"]; foreach($replacements as $keyFk => $valueFk) $fkLabel = str_replace($keyFk, $valueFk, $fkLabel); $this->_children[$childTable]["columns"][$column]["values"][$childItem][$lang][] = array("label" => $fkLabel, "value" => $value); } else $this->_children[$childTable]["columns"][$column]["values"][$childItem][$lang][] = ""; } else $this->_children[$childTable]["columns"][$column]["values"][$childItem][$lang][] = $value; } // Setter if (!$childObject->$functionName($value)) { $this->_error = true; $this->_children[$childTable]["columns"][$column]["errors"][$childItem][$lang] = $childObject->getError($column); } else $this->_children[$childTable]["columns"][$column]["errors"][$childItem][$lang] = ""; // Remember value type file if ($this->_children[$childTable]["columns"][$column]["html_type"] == 'input_file') { // No error, take model value if (empty($this->_children[$childTable]["columns"][$column]["errors"][$childItem][$lang])) { $fileValue = $childObject->__get($column); $this->_children[$childTable]["columns"][$column]["values"][$childItem][$lang][] = (!empty($fileValue)) ? SLS_String::getUrlFile($fileValue) : ""; } // Else, take uploaded file else { // Modern browsers if (is_array($value) && array_key_exists("data",$value)) $value = $value["data"]; if (is_array($value) && array_key_exists("tmp_name",$value)) $this->_children[$childTable]["columns"][$column]["values"][$childItem][$lang][] = $this->_generic->getSiteConfig("protocol")."://".$this->_generic->getSiteConfig("domainName")."/".$value["tmp_name"]; else $this->_children[$childTable]["columns"][$column]["values"][$childItem][$lang][] = ""; } } } // Force fk setter $fkColumn = $this->_xmlFk->getTag("//sls_configs/entry[@tableFk='".strtolower($childClassName)."' and @tablePk='".$this->_db_alias."_".SLS_String::tableToClass($this->_table)."']/@columnFk"); if (!empty($fkColumn)) { $functionName = "set".SLS_String::fullTrim(ucwords(SLS_String::stringToUrl(str_replace("_"," ",$fkColumn)," ",false)),""); $childObject->$functionName($this->_object_id); } // Create or save if ($needToCreate) $childObject->create(); else $childObject->save(); } $childObject->clear(); // Bearers $childBearers = (!empty($infos["bearers"])) ? ((is_array($infos["bearers"])) ? $infos["bearers"] : array($infos["bearers"])) : array(); foreach($childBearers as $bearerTable => $bearerValues) { // Bearer object $bearerClass = ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($bearerTable); $bearerAttributes = array_shift($this->_xmlBearer->getTagsAttributes("//sls_configs/entry[@tableBearer='".$bearerClass."']",array("table1","table2"))); $this->_generic->useModel(SLS_String::tableToClass($bearerTable),$this->_db_alias,"user"); $this->_generic->useModel(SLS_String::substrAfterFirstDelimiter($bearerAttributes["attributes"][0]["value"],"_"),SLS_String::substrBeforeFirstDelimiter($bearerAttributes["attributes"][0]["value"],"_")); $this->_generic->useModel(SLS_String::substrAfterFirstDelimiter($bearerAttributes["attributes"][1]["value"],"_"),SLS_String::substrBeforeFirstDelimiter($bearerAttributes["attributes"][1]["value"],"_")); $bearerObject = new $bearerClass(); $this->_recordsets[$bearerObject->getTable()]["pk"] = $bearerObject->getPrimaryKey(); $objectBearerTarget1 = new $bearerAttributes["attributes"][0]["value"](); $objectBearerTarget2 = new $bearerAttributes["attributes"][1]["value"](); $setterBearerTarget1 = "set".SLS_String::fullTrim(ucwords(SLS_String::stringToUrl(str_replace("_"," ",$objectBearerTarget1->getPrimaryKey())," ",false)),""); $setterBearerTarget2 = "set".SLS_String::fullTrim(ucwords(SLS_String::stringToUrl(str_replace("_"," ",$objectBearerTarget2->getPrimaryKey())," ",false)),""); $fkColumn = $this->_xmlFk->getTag("//sls_configs/entry[@tableFk='".strtolower($bearerObject->getDatabase())."_".$bearerObject->getTable()."' and @tablePk='".strtolower($bearerObject->getDatabase())."_".SLS_String::substrAfterFirstDelimiter($bearerAttributes["attributes"][0]["value"],"_")."']/@columnFk"); // Delete old bearers $bearerObject->deleteModels($bearerObject->getTable(),array(),array(0=>array("column"=>$fkColumn,"value"=>$childId,"mode"=>"equal"))); // Save new bearers foreach($bearerValues as $bearerValue) { if ($objectBearerTarget2->getModel($bearerValue) === true) { $replacements = $objectBearerTarget2->getParams(); $bearerLabel = $this->_children[$childTable]["bearers"][$bearerObject->getTable()]["ac_pattern"]; foreach($replacements as $keyBearer => $valueBearer) $bearerLabel = str_replace($keyBearer, $valueBearer, $bearerLabel); $this->_children[$childTable]["bearers"][$bearerObject->getTable()]["values"][$childItem][] = array("label" => $bearerLabel, "value" => $bearerValue); if (!$this->_error) { $bearerObject->$setterBearerTarget1($childId); $bearerObject->$setterBearerTarget2($bearerValue); $bearerObjectId = $bearerObject->create(); $this->_recordsets[$bearerObject->getTable()]["ids"][] = $bearerObjectId; $bearerObject->clear(); } } } } } } # /CHILDREN # BEARERS foreach($bearers as $bearerTable => $bearerValues) { // Bearer object $bearerClass = ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($bearerTable); $bearerAttributes = array_shift($this->_xmlBearer->getTagsAttributes("//sls_configs/entry[@tableBearer='".$bearerClass."']",array("table1","table2"))); $this->_generic->useModel(SLS_String::tableToClass($bearerTable),$this->_db_alias,"user"); $this->_generic->useModel(SLS_String::substrAfterFirstDelimiter($bearerAttributes["attributes"][0]["value"],"_"),SLS_String::substrBeforeFirstDelimiter($bearerAttributes["attributes"][0]["value"],"_")); $this->_generic->useModel(SLS_String::substrAfterFirstDelimiter($bearerAttributes["attributes"][1]["value"],"_"),SLS_String::substrBeforeFirstDelimiter($bearerAttributes["attributes"][1]["value"],"_")); $bearerObject = new $bearerClass(); $this->_recordsets[$bearerObject->getTable()]["pk"] = $bearerObject->getPrimaryKey(); $objectBearerTarget1 = new $bearerAttributes["attributes"][0]["value"](); $objectBearerTarget2 = new $bearerAttributes["attributes"][1]["value"](); $setterBearerTarget1 = "set".SLS_String::fullTrim(ucwords(SLS_String::stringToUrl(str_replace("_"," ",$objectBearerTarget1->getPrimaryKey())," ",false)),""); $setterBearerTarget2 = "set".SLS_String::fullTrim(ucwords(SLS_String::stringToUrl(str_replace("_"," ",$objectBearerTarget2->getPrimaryKey())," ",false)),""); $fkColumn = $this->_xmlFk->getTag("//sls_configs/entry[@tableFk='".strtolower($bearerObject->getDatabase())."_".$bearerObject->getTable()."' and @tablePk='".strtolower($bearerObject->getDatabase())."_".SLS_String::substrAfterFirstDelimiter($bearerAttributes["attributes"][0]["value"],"_")."']/@columnFk"); // Delete old bearers $bearerObject->deleteModels($bearerObject->getTable(),array(),array(0=>array("column"=>$fkColumn,"value"=>$this->_object_id,"mode"=>"equal"))); // Save new bearers foreach($bearerValues as $bearerValue) { if ($objectBearerTarget2->getModel($bearerValue) === true) { $replacements = $objectBearerTarget2->getParams(); $bearerLabel = $this->_bearers[$bearerObject->getTable()]["ac_pattern"]; foreach($replacements as $keyBearer => $valueBearer) $bearerLabel = str_replace($keyBearer, $valueBearer, $bearerLabel); $this->_bearers[$bearerObject->getTable()]["values"][] = array("label" => $bearerLabel, "value" => $bearerValue); if (!$this->_error) { $bearerObject->$setterBearerTarget1($this->_object_id); $bearerObject->$setterBearerTarget2($bearerValue); $bearerObjectId = $bearerObject->create(); $this->_recordsets[$bearerObject->getTable()]["ids"][] = $bearerObjectId; $bearerObject->clear(); } } } } # /BEARERS # CHILDREN-TO-DELETE foreach($childrenToDelete as $childTable => $childValues) { $this->_generic->useModel(SLS_String::tableToClass($childTable),$this->_db_alias,"user"); $childClassName = $this->_db_alias."_".SLS_String::tableToClass($childTable); $childObject = new $childClassName(); foreach(((is_array($childValues)) ? $childValues : array($childValues)) as $childToDelete) { if ($childObject->getModel($childToDelete) === true) $childObject->delete(true); } } # /CHILDREN-TO-DELETE # If error, delete model & linked recordsets if ($this->_error && $this->_object->getModel($this->_object_id)) { if ($this->_async) { $this->_render["message"] = sprintf($GLOBALS[$GLOBALS['PROJECT_NAME']]['JS']['SLS_BO_ERROR'],$this->_lang->getLang()); // Render echo json_encode($this->_render); die(); } } # /Errors # All good dude ! if (!$this->_error) { if ($this->_async) { $this->_render["status"] = "OK"; $this->_render["message"] = $GLOBALS[$GLOBALS['PROJECT_NAME']]['JS']['SLS_BO_GENERIC_SUBMIT_SUCCESS_EDIT']; } else { $this->pushNotif("success",$GLOBALS[$GLOBALS['PROJECT_NAME']]['JS']['SLS_BO_GENERIC_SUBMIT_SUCCESS_EDIT']); if ($this->_forward) { switch ($redirect) { case "edit": # Remember admin settings $nodeExists = $this->_xmlRight->getTag("//sls_configs/entry[@login='******']/@login"); if (!empty($nodeExists)) { $this->_xmlRight->setTag("//sls_configs/entry[@login='******']/settings/setting[@key='edit_callback']","edit"); $this->_xmlRight->saveXML($this->_generic->getPathConfig("configSls")."/rights.xml"); $this->_xmlRight->refresh(); } # /Remember admin settings $this->_generic->forward($this->_boController,"Modify".ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($this->_table),array("id"=>$this->_object_id)); break; case "list": # Remember admin settings $nodeExists = $this->_xmlRight->getTag("//sls_configs/entry[@login='******']/@login"); if (!empty($nodeExists)) { $this->_xmlRight->setTag("//sls_configs/entry[@login='******']/settings/setting[@key='edit_callback']","list"); $this->_xmlRight->saveXML($this->_generic->getPathConfig("configSls")."/rights.xml"); $this->_xmlRight->refresh(); } # /Remember admin settings $rememberList = (is_array($this->_session->getParam("SLS_BO_LIST"))) ? $this->_session->getParam("SLS_BO_LIST") : array(); if (array_key_exists($this->_db_alias."_".$this->_table,$rememberList) && !empty($rememberList[$this->_db_alias."_".$this->_table])) $this->_generic->redirect($rememberList[$this->_db_alias."_".$this->_table]); else $this->_generic->forward($this->_boController,"List".ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($this->_table)); break; } } } } # /All good dude ! } # /Reload # Page infos $langsError = array(); $columnValues = array(); $this->_xml->startTag("page"); $this->_xml->startTag("model"); $this->_xml->addFullTag("db",$this->_db_alias,true); $this->_xml->addFullTag("table",$this->_table,true); $this->_xml->addFullTag("label",$this->_tableComment,true); $this->_xml->addFullTag("multilanguage",($this->_object->isMultilanguage()) ? "true" : "false",true); $this->_xml->addFullTag("pk",$this->_object->getPrimaryKey(),true); $this->_xml->endTag("model"); $this->_xml->startTag("urls"); $this->_xml->addFullTag("list",($this->_generic->actionIdExists($this->_generic->getActionId($this->_boController,"List".ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($this->_table)))) ? $this->_generic->getFullPath($this->_boController,"List".ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($this->_table)) : "",true,array("authorized" => (SLS_BoRights::isAuthorized("read",ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($this->_table))) ? "true" : "false")); $this->_xml->addFullTag("add",($this->_generic->actionIdExists($this->_generic->getActionId($this->_boController,"Add".ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($this->_table)))) ? $this->_generic->getFullPath($this->_boController,"Add".ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($this->_table)) : "",true,array("authorized" => (SLS_BoRights::isAuthorized("add",ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($this->_table))) ? "true" : "false")); $this->_xml->addFullTag("populate",$this->_generic->getFullPath($this->_boController,"BoPopulate",array("Db" => ucfirst(strtolower($this->_db_alias)), "Table" => $this->_table)),true,array("authorized" => (SLS_BoRights::getAdminType() == "developer") ? "true" : "false")); $this->_xml->addFullTag("edit",($this->_generic->actionIdExists($this->_generic->getActionId($this->_boController,"Modify".ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($this->_table)))) ? $this->_generic->getFullPath($this->_boController,"Modify".ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($this->_table),array("id" => ""),false) : "",true,array("authorized" => (SLS_BoRights::isAuthorized("edit",ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($this->_table))) ? "true" : "false")); $this->_xml->addFullTag("clone",($this->_generic->actionIdExists($this->_generic->getActionId($this->_boController,"Clone".ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($this->_table)))) ? $this->_generic->getFullPath($this->_boController,"Clone".ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($this->_table),array("id" => ""),false) : "",true,array("authorized" => (SLS_BoRights::isAuthorized("clone",ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($this->_table))) ? "true" : "false")); $this->_xml->addFullTag("delete",($this->_generic->actionIdExists($this->_generic->getActionId($this->_boController,"Delete".ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($this->_table)))) ? $this->_generic->getFullPath($this->_boController,"Delete".ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($this->_table),array("id" => ""),false) : "",true,array("authorized" => (SLS_BoRights::isAuthorized("delete",ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($this->_table))) ? "true" : "false")); $this->_xml->endTag("urls"); $this->_xml->startTag("columns"); foreach($this->_columns as $columnName => $infosColumn) { $this->_xml->startTag("column"); foreach($infosColumn as $key => $value) { if (is_array($value) && !in_array($key,array("choices","values","errors"))) continue; if ($key == "choices") { $this->_xml->startTag("choices"); foreach($value as $currentValue) $this->_xml->addFullTag("choice",$currentValue,true); $this->_xml->endTag("choices"); } else if ($key == "values") { $this->_xml->startTag("values"); foreach($value as $currentLang => $values) { if ($this->_async) { if (empty($columnValues[$columnName])) { if ($this->_object->isMultilanguage() && $this->_columns[$columnName]["multilanguage"] == "true" && $currentLang == $this->_lang->getLang()) { $columnValues[$columnName] = ($columnName == "pk_lang") ? $this->_lang->getLang() : $values; } else if ($currentLang == $this->_defaultLang) { $columnValues[$columnName] = ($columnName == "pk_lang") ? $this->_lang->getLang() : $values; } } } foreach($values as $currentValue) { if (is_array($currentValue)) $this->_xml->addFullTag("value",$currentValue["value"],true,array("lang"=>$currentLang,"label"=>$currentValue["label"])); else { if ($this->_columns[$columnName]["specific_type"] == 'file' && $this->_columns[$columnName]["specific_type_extended"] == 'all') { $img = "false"; if (file_exists($this->_generic->getPathConfig("coreImg")."BO-2014/Mime-Types/".strtolower(str_replace("/","-",SLS_String::getExtensionMimeType(SLS_String::substrAfterLastDelimiter($currentValue,"."))).".png"))) { $mime = $this->_generic->getSiteConfig("protocol")."://".$this->_generic->getSiteConfig("domainName")."/".$this->_generic->getPathConfig("coreImg")."BO-2014/Mime-Types/".strtolower(str_replace("/","-",SLS_String::getExtensionMimeType(SLS_String::substrAfterLastDelimiter($currentValue,"."))).".png"); if (SLS_String::startsWith(SLS_String::getExtensionMimeType(SLS_String::substrAfterLastDelimiter($currentValue,".")),"image/")) $img = "true"; } else $mime = $this->_generic->getSiteConfig("protocol")."://".$this->_generic->getSiteConfig("domainName")."/".$this->_generic->getPathConfig("coreImg")."BO-2014/Mime-Types/application-octet-stream.png"; $this->_xml->addFullTag("value",$currentValue,true,array("lang"=>$currentLang,"img"=>$img,"mime"=>$mime)); } else if ($this->_columns[$columnName]["specific_type"] == 'file' && $this->_columns[$columnName]["specific_type_extended"] == 'img') { $image = $currentValue; if (SLS_String::contains($image,$this->_generic->getSiteConfig("domainName")."/")) $image = SLS_String::substrAfterFirstDelimiter($image,$this->_generic->getSiteConfig("domainName")."/"); $this->_xml->addFullTag("value",$currentValue,true,array("lang"=>$currentLang,"size"=>(file_exists($image)) ? filesize($image) : 0)); } else $this->_xml->addFullTag("value",$currentValue,true,array("lang"=>$currentLang)); } } } $this->_xml->endTag("values"); } else if ($key == "errors") { $this->_xml->startTag("errors"); foreach($value as $currentLang => $currentValue) { $this->_xml->addFullTag("error",$infosColumn["label"]." ".$GLOBALS[$GLOBALS['PROJECT_NAME']]['JS']['SLS_'.strtoupper($currentValue)],true,array("lang"=>$currentLang)); if (!in_array($currentLang,$langsError)) { $this->pushNotif("error",sprintf($GLOBALS[$GLOBALS['PROJECT_NAME']]['JS']['SLS_BO_ERROR'],$currentLang)); $langsError[] = $currentLang; } } $this->_xml->endTag("errors"); } else $this->_xml->addFullTag($key,$value,true); } $this->_xml->endTag("column"); } $this->_xml->endTag("columns"); // If quick-edit view if ($this->_async) { // Render $this->_render["status"] = "OK"; $this->_render["result"] = $columnValues; echo json_encode($this->_render); die(); } $this->_xml->startTag("bearers"); foreach($this->_bearers as $bearerTable => $infosColumn) { $this->_xml->startTag("column"); foreach($infosColumn as $key => $value) { if (is_array($value) && !in_array($key,array("choices","values"))) continue; if ($key == "choices") { $this->_xml->startTag("choices"); foreach($value as $currentValue) $this->_xml->addFullTag("choice",$currentValue,true); $this->_xml->endTag("choices"); } else if ($key == "values") { $this->_xml->startTag("values"); foreach($value as $currentValue => $currentValues) $this->_xml->addFullTag("value",$currentValues["value"],true,array("lang"=>$this->_defaultLang,"label"=>$currentValues["label"])); $this->_xml->endTag("values"); } else $this->_xml->addFullTag($key,$value,true); } $this->_xml->endTag("column"); } $this->_xml->endTag("bearers"); $this->_xml->startTag("children"); foreach($this->_children as $childTable => $childInfos) { $this->_xml->startTag("child"); $this->_xml->startTag("model"); foreach($childInfos["model"] as $key => $value) $this->_xml->addFullTag($key,$value,true); $this->_xml->endTag("model"); $this->_xml->startTag("urls"); foreach($childInfos["urls"] as $key => $value) $this->_xml->addFullTag($key,$value["url"],true,array("authorized" => $value["authorized"])); $this->_xml->endTag("urls"); $this->_xml->startTag("columns"); foreach($childInfos["columns"] as $columnName => $infosColumn) { $this->_xml->startTag("column"); foreach($infosColumn as $key => $value) { if (is_array($value) && !in_array($key,array("choices","values","errors"))) continue; if ($key == "choices") { $this->_xml->startTag("choices"); foreach($value as $currentValue) $this->_xml->addFullTag("choice",$currentValue,true); $this->_xml->endTag("choices"); } else if ($key == "values") { $this->_xml->startTag("values"); foreach($value as $offset => $valuesChildren) { $this->_xml->startTag("record"); foreach($valuesChildren as $currentLang => $values) { foreach($values as $currentValue) { if (is_array($currentValue)) $this->_xml->addFullTag("value",$currentValue["value"],true,array("lang"=>$currentLang,"label"=>$currentValue["label"])); else { if ($this->_children[$childTable]["columns"][$columnName]["specific_type"] == 'file' && $this->_children[$childTable]["columns"][$columnName]["specific_type_extended"] == 'all') { $img = "false"; if (file_exists($this->_generic->getPathConfig("coreImg")."BO-2014/Mime-Types/".strtolower(str_replace("/","-",SLS_String::getExtensionMimeType(SLS_String::substrAfterLastDelimiter($currentValue,"."))).".png"))) { $mime = $this->_generic->getSiteConfig("protocol")."://".$this->_generic->getSiteConfig("domainName")."/".$this->_generic->getPathConfig("coreImg")."BO-2014/Mime-Types/".strtolower(str_replace("/","-",SLS_String::getExtensionMimeType(SLS_String::substrAfterLastDelimiter($currentValue,"."))).".png"); if (SLS_String::startsWith(SLS_String::getExtensionMimeType(SLS_String::substrAfterLastDelimiter($currentValue,".")),"image/")) $img = "true"; } else $mime = $this->_generic->getSiteConfig("protocol")."://".$this->_generic->getSiteConfig("domainName")."/".$this->_generic->getPathConfig("coreImg")."BO-2014/Mime-Types/application-octet-stream.png"; $this->_xml->addFullTag("value",$currentValue,true,array("lang"=>$currentLang,"img"=>$img,"mime"=>$mime)); } else if ($this->_children[$childTable]["columns"][$columnName]["specific_type"] == 'file' && $this->_children[$childTable]["columns"][$columnName]["specific_type_extended"] == 'img') { $image = $currentValue; if (SLS_String::contains($image,$this->_generic->getSiteConfig("domainName")."/")) $image = SLS_String::substrAfterFirstDelimiter($image,$this->_generic->getSiteConfig("domainName")."/"); $this->_xml->addFullTag("value",$currentValue,true,array("lang"=>$currentLang,"size"=>(file_exists($image)) ? filesize($image) : 0)); } else $this->_xml->addFullTag("value",$currentValue,true,array("lang"=>$currentLang)); } } } $this->_xml->endTag("record"); } $this->_xml->endTag("values"); } else if ($key == "errors") { $this->_xml->startTag("errors"); foreach($value as $currentLang => $currentValues) { $this->_xml->startTag("record"); foreach($currentValues as $currentLang => $currentValue) { if (!empty($currentValue)) { $this->_xml->addFullTag("error",$infosColumn["label"]." ".$GLOBALS[$GLOBALS['PROJECT_NAME']]['JS']['SLS_'.strtoupper($currentValue)],true,array("lang"=>$currentLang)); if (!in_array($currentLang,$langsError)) { $this->pushNotif("error",sprintf($GLOBALS[$GLOBALS['PROJECT_NAME']]['JS']['SLS_BO_ERROR'],$currentLang)); $langsError[] = $currentLang; } } else $this->_xml->addFullTag("error","",true,array("lang"=>$currentLang)); } $this->_xml->endTag("record"); } $this->_xml->endTag("errors"); } else $this->_xml->addFullTag($key,$value,true); } $this->_xml->endTag("column"); } $this->_xml->endTag("columns"); $this->_xml->startTag("bearers"); foreach($this->_children[$childTable]["bearers"] as $bearerTable => $infosColumn) { $this->_xml->startTag("column"); foreach($infosColumn as $key => $value) { if (is_array($value) && !in_array($key,array("choices","values"))) continue; if ($key == "choices") { $this->_xml->startTag("choices"); foreach($value as $currentValue) $this->_xml->addFullTag("choice",$currentValue,true); $this->_xml->endTag("choices"); } else if ($key == "values") { $this->_xml->startTag("values"); foreach($value as $childItem => $values) { $this->_xml->startTag("record"); foreach($values as $currentValue => $currentValues) $this->_xml->addFullTag("value",$currentValues["value"],true,array("lang"=>$this->_defaultLang,"label"=>$currentValues["label"])); $this->_xml->endTag("record"); } $this->_xml->endTag("values"); } else $this->_xml->addFullTag($key,$value,true); } $this->_xml->endTag("column"); } $this->_xml->endTag("bearers"); $this->_xml->endTag("child"); } $this->_xml->endTag("children"); $this->_xml->endTag("page"); # /Page infos return $this->_xml; }
public function getXML() { # Objects $className = ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($this->_table); $this->_generic->useModel(SLS_String::tableToClass($this->_table),ucfirst(strtolower($this->_db_alias)),"user"); $this->_object = new $className(); $this->_table = $this->_object->getTable(); $this->_gap = 0; $boPath = "//sls_configs/entry[@type='table' and @name='".strtolower($className)."']"; $boExists = $this->_xmlBo->getTag($boPath."/@type"); if (empty($boExists)) $boPath = "//sls_configs/entry/entry[@type='table' and @name='".strtolower($className)."']"; # /Objects # User params $this->_join = array(); $this->_where = array(); $this->_group = array(); $this->_order = array(); $this->_limit = array(); $this->_reload = ($this->_http->getParam("reload-filters") == "true") ? true : false; $joins = $this->_xmlBo->getTagsAttributes($boPath."/joins/join",array("table","column")); $wheres = $this->_xmlBo->getTagsAttributes($boPath."/wheres/where",array("table","column","value","mode")); $groups = $this->_xmlBo->getTagsAttributes($boPath."/groups/group",array("table","column")); $orders = $this->_xmlBo->getTagsAttributes($boPath."/orders/order",array("table","column","order")); $limits = array_shift($this->_xmlBo->getTagsAttributes($boPath."/limits/limit",array("start","length"))); if (!empty($joins)) for($i=0 ; $i<$count=count($joins) ; $i++) $this->_join[] = array("table" => SLS_String::substrAfterFirstDelimiter($joins[$i]["attributes"][0]["value"],"_"), "column" => $joins[$i]["attributes"][1]["value"], "mode" => "left"); if (!empty($wheres) && !$this->_reload) for($i=0 ; $i<$count=count($wheres) ; $i++) $this->_where[] = array("column" => SLS_String::substrAfterFirstDelimiter($wheres[$i]["attributes"][0]["value"],"_").".".$wheres[$i]["attributes"][1]["value"], "value" => $wheres[$i]["attributes"][2]["value"], "mode" => $wheres[$i]["attributes"][3]["value"]); if (!empty($groups)) for($i=0 ; $i<$count=count($groups) ; $i++) $this->_group[] = SLS_String::substrAfterFirstDelimiter($groups[$i]["attributes"][0]["value"],"_").".".$groups[$i]["attributes"][1]["value"]; if (!empty($orders)) for($i=0 ; $i<$count=count($orders) ; $i++) $this->_order[] = array("column" => SLS_String::substrAfterFirstDelimiter($orders[$i]["attributes"][0]["value"],"_").".".$orders[$i]["attributes"][1]["value"], "order" => $orders[$i]["attributes"][2]["value"]); if (!empty($limits)) { $this->_limit["start"] = $limits["attributes"][0]["value"]; $this->_limit["length"] = $limits["attributes"][1]["value"]; } # /User params # Comments $this->_comments = array(); $this->_types = array(); $commentsTable = array(); $tables = array($this->_table); foreach($this->_join as $joinTable) $tables[] = $joinTable["table"]; foreach($tables as $commentTable) { if (!array_key_exists($commentTable,$commentsTable)) { $comment = $this->_object->getTableComment($commentTable,$this->_db_alias); if (empty($comment)) $comment = $commentTable; if (SLS_String::startsWith($comment,"sls:lang:")) { $key = strtoupper(SLS_String::substrAfterFirstDelimiter($comment,"sls:lang:")); $comment = (empty($GLOBALS[$GLOBALS['PROJECT_NAME']]['XSL'][$key])) ? (empty($GLOBALS[$GLOBALS['PROJECT_NAME']]['JS'][$key]) ? $commentTable : $GLOBALS[$GLOBALS['PROJECT_NAME']]['JS'][$key]) : $GLOBALS[$GLOBALS['PROJECT_NAME']]['XSL'][$key]; } $commentsTable[$commentTable] = $comment; } } # /Comments # Columns $this->_columns = array(); $this->_columns = array_merge($this->_columns, $this->getTableColumns($this->_db_alias,$this->_table,$boPath,"",true,true)); foreach($this->_join as $joinTable) $this->_columns = array_merge($this->_columns, $this->getTableColumns($this->_db_alias,$joinTable["table"],$boPath,"",false,true)); $this->_xml->startTag("columns"); foreach($this->_columns as $columnName => $infosColumn) { $this->_xml->startTag("column"); foreach($infosColumn as $key => $value) { if ((is_array($value) && !in_array($key,array("choices","values","errors"))) || in_array($key,array("values","errors"))) continue; if ($key == "choices") { $this->_xml->startTag("choices"); foreach($value as $currentValue) $this->_xml->addFullTag("choice",$currentValue,true); $this->_xml->endTag("choices"); } else if ($key == "label") { $this->_xml->addFullTag($key,$value,true); $this->_xml->startTag("labels_html"); $labels = explode(" ",trim($value)); foreach($labels as $label) $this->_xml->addFullTag("label_html",$label,true); $this->_xml->endTag("labels_html"); } else $this->_xml->addFullTag($key,$value,true); } $this->_xml->endTag("column"); } $this->_xml->endTag("columns"); # /Columns # Reload params // Where $filters = $this->_http->getParam("filters"); if (is_array($filters)) { foreach($filters as $filterTable => $filterColumns) { foreach($filterColumns as $filterColumn => $infos) { $values = (is_array($infos["values"]) && $this->_columns[$filterColumn]["html_type"] != 'input_checkbox') ? $infos["values"] : array($infos["values"]); $modes = (is_array($infos["mode"])) ? $infos["mode"] : array($infos["mode"]); for($i=0 ; $i<$count=count($values) ; $i++) { $value = $values[$i]; $mode = (isset($modes[$i])) ? $modes[$i] : ((isset($modes[0])) ? ($modes[0]) : ""); $mode = (empty($mode)) ? "equal" : $mode; if (is_array($value) && $this->_columns[$filterColumn]["html_type"] == 'input_checkbox') $mode = "in"; if (in_array($mode,array("null","notnull")) || (!in_array($mode,array("null","notnull")) && !empty($value))) { $whereFound = false; foreach($this->_where as $where) { if (SLS_String::contains($where["column"],$filterColumn) && $where["value"] == $value && $where["mode"] == $mode) { $whereFound = true; break; } } if (!$whereFound) $this->_where[] = array("column" => $filterTable.".".$filterColumn, "value" => $value, "mode" => $mode); } } } } } // Order $orderP = $this->_http->getParam("Order"); if (!empty($orderP)) { $orderWays = array("ASC","DESC"); $orderColumn = SLS_String::substrBeforeLastDelimiter($orderP,"_"); $orderWay = SLS_String::substrAfterLastDelimiter($orderP,"_"); if (array_key_exists($orderColumn,$this->_columns)) { if (!in_array(strtoupper($orderWay),$orderWays)) $orderWay = array_shift($orderWays); $this->_order = array(array("column" => $orderColumn, "order" => $orderWay)); } } // Limit $length = $this->_http->getParam("Length"); if (!empty($length) && $length > 0) $this->_limit["length"] = $length; # /Reload params # Default params $positionExists = $this->_xmlType->getTag("//sls_configs/entry[@table='".$this->_table."' and @type='position']/@column"); $lengthExists = $this->_xmlRight->getTag("//sls_configs/entry[@login='******']/settings/setting[@key='list_nb_by_page']"); $fkRecursiveExists = $this->_xmlFk->getTag("//sls_configs/entry[@tableFk='".strtolower($this->_db_alias."_".$this->_table)."' and @tablePk='".strtolower($this->_db_alias)."_".SLS_String::tableToClass($this->_table)."']/@columnFk"); // i18n > restrict on current language if ($this->_object->isMultilanguage()) { $whereLang = false; foreach($this->_where as $where) { if (SLS_String::contains($where["column"],"pk_lang")) { $whereLang = true; break; } } if (!$whereLang) array_unshift($this->_where, array("column" => $this->_table.".pk_lang", "value" => $this->_lang->getLang(), "mode" => "equal")); if (!empty($this->_join)) { foreach($this->_join as $join) { $join = (is_array($join) && array_key_exists("table",$join)) ? $join["table"] : $join; $this->_generic->useModel(SLS_String::tableToClass($join),$this->_db_alias,"user"); $joinClass = ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($join); $joinObject = new $joinClass(); $joinColumns = $joinObject->getColumns(); if (is_array($joinColumns) && in_array("pk_lang",$joinColumns)) array_push($this->_where, array("column" => $join.".pk_lang", "value" => $this->_lang->getLang(), "mode" => "equal")); } } } // fk on the same model if (!empty($fkRecursiveExists)) $this->_where[] = array("column" => $this->_table.".".$fkRecursiveExists, "value" => "", "mode" => "null"); // group by PK if (empty($this->_group)) $this->_group = array($this->_object->getPrimaryKey()); // order by position asc or PK desc if (empty($this->_order)) $this->_order = (empty($positionExists)) ? array(array("column" => $this->_object->getPrimaryKey(), "order" => "DESC")) : array(array("column" => $positionExists, "order" => "ASC")); // limit at 0, 20 if (empty($this->_limit)) { if (!empty($lengthExists) && $lengthExists > 0) $this->_limit = array("start" => "0", "length" => $lengthExists); else $this->_limit = array("start" => "0", "length" => "20"); } # /Default params # Page infos $this->_xml->startTag("page"); $this->_xml->startTag("model"); $this->_xml->addFullTag("db",$this->_db_alias,true); $this->_xml->addFullTag("table",$this->_table,true); $this->_xml->addFullTag("label",$comment = trim((empty($commentsTable[$this->_table])) ? $this->_table : $commentsTable[$this->_table]),true); $this->_xml->startTag("labels_html"); $comments = explode(" ",$comment); foreach($comments as $comment) $this->_xml->addFullTag("label_html",$comment,true); $this->_xml->endTag("labels_html"); $this->_xml->addFullTag("pk",$this->_object->getPrimaryKey(),true); $this->_xml->endTag("model"); $this->_xml->startTag("joins"); foreach($this->_join as $joinTable) { $this->_xml->startTag("join"); $this->_xml->addFullTag("db",$this->_db_alias,true); $this->_xml->addFullTag("table",$joinTable["table"],true); $this->_xml->addFullTag("column",$joinTable["column"],true); $this->_xml->addFullTag("label",$comment = trim((empty($commentsTable[$joinTable["table"]])) ? $joinTable["table"] : $commentsTable[$joinTable["table"]]),true); $this->_xml->startTag("labels_html"); $comments = explode(" ",$comment); foreach($comments as $comment) $this->_xml->addFullTag("label_html",$comment,true); $this->_xml->endTag("labels_html"); $this->_xml->endTag("join"); } $this->_xml->endTag("joins"); $pkLangWhereFound = false; $this->_xml->startTag("wheres"); foreach($this->_where as $clause) { $table = (SLS_String::contains($clause["column"],".")) ? SLS_String::substrBeforeFirstDelimiter($clause["column"],".") : $this->_table; $column = (SLS_String::contains($clause["column"],".")) ? SLS_String::substrAfterFirstDelimiter($clause["column"],".") : $clause["column"]; if ($column != "pk_lang" || ($column == "pk_lang" && !$pkLangWhereFound)) { if ($column == "pk_lang" && !$pkLangWhereFound) $pkLangWhereFound = true; $this->_xml->startTag("where"); $this->_xml->addFullTag("table",$table,true); $this->_xml->addFullTag("column",$column,true); $this->_xml->startTag("values"); if (is_array($clause["value"])) { foreach($clause["value"] as $clauseValue) $this->_xml->addFullTag("value",$clauseValue,true); } else $this->_xml->addFullTag("value",$clause["value"],true); $this->_xml->endTag("values"); $this->_xml->addFullTag("mode",$clause["mode"],true); $this->_xml->endTag("where"); } } $this->_xml->endTag("wheres"); $this->_xml->startTag("groups"); foreach($this->_group as $groupColumn) $this->_xml->addFullTag("group",(SLS_String::contains($groupColumn,".")) ? SLS_String::substrAfterFirstDelimiter($groupColumn,".") : $groupColumn,true); $this->_xml->endTag("groups"); $this->_xml->startTag("order"); $this->_xml->addFullTag("column",(SLS_String::contains($this->_order[0]["column"],".")) ? SLS_String::substrAfterFirstDelimiter($this->_order[0]["column"],".") : $this->_order[0]["column"],true); $this->_xml->addFullTag("way",$this->_order[0]["order"],true); $this->_xml->endTag("order"); $page = ($this->_http->getParam("page") > 1) ? $this->_http->getParam("page") : 1; $this->_xml->startTag("limit"); $this->_xml->addFullTag("start",$this->_limit["start"] = ($page < 2) ? 0 : (($page-1) * $this->_limit["length"]),true); $this->_xml->addFullTag("length",$this->_limit["length"],true); $this->_xml->endTag("limit"); $countWhere = $this->_where; if (!empty($fkRecursiveExists)) { for($i=0 ; $i<$count=count($countWhere) ; $i++) { if ($countWhere[$i]["column"] == $this->_table.".".$fkRecursiveExists) { unset($countWhere[$i]); break; } } } $this->_xml->addFullTag("total",$this->_object->countModels($this->_table,$this->_join,$countWhere,$this->_group),true); $this->_xml->endTag("page"); # /Page infos # Recordsets $recordsets = $this->_object->searchModels($this->_table,$this->_join,$this->_where,$this->_group,$this->_order,$this->_limit); $this->_xml = $this->formatRecordsets($this->_xml,$recordsets,$fkRecursiveExists); # Recordsets # Urls $this->_xml->startTag("urls"); $this->_xml->addFullTag("list",($this->_generic->actionIdExists($this->_generic->getActionId($this->_boController,"List".ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($this->_table)))) ? $this->_generic->getFullPath($this->_boController,"List".ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($this->_table)) : "",true,array("authorized" => (SLS_BoRights::isAuthorized("read",ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($this->_table))) ? "true" : "false")); $this->_xml->addFullTag("add",($this->_generic->actionIdExists($this->_generic->getActionId($this->_boController,"Add".ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($this->_table)))) ? $this->_generic->getFullPath($this->_boController,"Add".ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($this->_table)) : "",true,array("authorized" => (SLS_BoRights::isAuthorized("add",ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($this->_table))) ? "true" : "false")); $this->_xml->addFullTag("populate",$this->_generic->getFullPath($this->_boController,"BoPopulate",array("Db" => ucfirst(strtolower($this->_db_alias)), "Table" => $this->_table)),true,array("authorized" => (SLS_BoRights::getAdminType() == "developer") ? "true" : "false")); $this->_xml->addFullTag("edit",($this->_generic->actionIdExists($this->_generic->getActionId($this->_boController,"Modify".ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($this->_table)))) ? $this->_generic->getFullPath($this->_boController,"Modify".ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($this->_table),array("id" => ""),false) : "",true,array("authorized" => (SLS_BoRights::isAuthorized("edit",ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($this->_table))) ? "true" : "false")); $this->_xml->addFullTag("clone",($this->_generic->actionIdExists($this->_generic->getActionId($this->_boController,"Clone".ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($this->_table)))) ? $this->_generic->getFullPath($this->_boController,"Clone".ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($this->_table),array("id" => ""),false) : "",true,array("authorized" => (SLS_BoRights::isAuthorized("clone",ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($this->_table))) ? "true" : "false")); $this->_xml->addFullTag("delete",($this->_generic->actionIdExists($this->_generic->getActionId($this->_boController,"Delete".ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($this->_table)))) ? $this->_generic->getFullPath($this->_boController,"Delete".ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($this->_table),array("id" => ""),false) : "",true,array("authorized" => (SLS_BoRights::isAuthorized("delete",ucfirst(strtolower($this->_db_alias))."_".SLS_String::tableToClass($this->_table))) ? "true" : "false")); $this->_xml->endTag("urls"); # /Urls # Remember admin settings $nodeExists = $this->_xmlRight->getTag("//sls_configs/entry[@login='******']/@login"); if (!empty($nodeExists)) { $this->_xmlRight->setTag("//sls_configs/entry[@login='******']/settings/setting[@key='list_nb_by_page']",$this->_limit["length"]); $this->_xmlRight->saveXML($this->_generic->getPathConfig("configSls")."/rights.xml"); $this->_xmlRight->refresh(); } # /Remember admin settings # Session remember $rememberList = $this->_session->getParam("SLS_BO_LIST"); if (empty($rememberList)) $rememberList = array(); $url = SLS_String::substrAfterFirstDelimiter($_SERVER["REQUEST_URI"],(($_SERVER['SCRIPT_NAME'] != "/index.php") ? SLS_String::substrBeforeFirstDelimiter($_SERVER['SCRIPT_NAME'],"/index.php")."/" : "/")); if (SLS_String::endsWith($url,$this->_generic->getSiteConfig("defaultExtension"))) $url = SLS_String::substrBeforeLastDelimiter($url,".".$this->_generic->getSiteConfig("defaultExtension")); $query = http_build_query($_POST,"","/"); $query = str_replace(array("%5B","%5D","=/","="),array("[","]","=|sls_empty|/","/"),preg_replace('/%5B[0-9]+%5D/simU', '%5B%5D', $query)); if (SLS_String::endsWith(trim($query),"/")) $query = SLS_String::substrBeforeLastDelimiter(trim($query),"/"); if (!empty($query)) $url .= "/".$query.((count(explode("/",$query))%2 != 0) ? "/|sls_empty|" : ""); if (SLS_String::endsWith($url,"/")) $url = SLS_String::substrBeforeLastDelimiter($url,"/"); $url .= ".".$this->_generic->getSiteConfig("defaultExtension"); $rememberList[$this->_db_alias."_".$this->_table] = $url; $this->_session->setParam("SLS_BO_LIST",$rememberList); # /Session remember return $this->_xml; }
public function constructXML() { $this->_boController = $this->_generic->getBo(); if ($this->_generic->getGenericControllerName() == $this->_boController) { @include_once($this->_generic->getPathConfig("actionLangs").$this->_boController."/__".$this->_boController.".".$this->_lang->getLang().".lang.php"); $db = SLS_Sql::getInstance(); $dbsAlias = $db->getDbs(); $comments = array(); foreach($dbsAlias as $dbAlias) { $db->changeDb($dbAlias); $tables = $db->showTables(); for($i=0 ; $i<$count=count($tables) ; $i++) { $table = $tables[$i]->Name; $key = ucfirst(strtolower($dbAlias))."_".SLS_String::tableToClass($table); if (!array_key_exists($key,$comments)) { $comment = $tables[$i]->Comment; if (SLS_String::startsWith($comment,"sls:lang:")) { $globalKey = strtoupper(SLS_String::substrAfterFirstDelimiter($comment,"sls:lang:")); $comment = (empty($GLOBALS[$GLOBALS['PROJECT_NAME']]['XSL'][$globalKey])) ? (empty($GLOBALS[$GLOBALS['PROJECT_NAME']]['JS'][$globalKey]) ? $table : $GLOBALS[$GLOBALS['PROJECT_NAME']]['JS'][$globalKey]) : $GLOBALS[$GLOBALS['PROJECT_NAME']]['XSL'][$globalKey]; } $comments[$key] = (empty($comment)) ? $table : $comment; } } } $db->changeDb($db->connectToDefaultDb()); # Nav if (SLS_BoRights::isLogged()) { $xmlBo = new SLS_XMLToolbox(file_get_contents($this->_generic->getPathConfig("configSls")."/bo.xml")); $entries = $xmlBo->getTagsAttributes("//sls_configs/entry",array("type","name")); $this->_xmlToolBox->startTag("nav"); if (!empty($entries)) { # BOs $this->_xmlToolBox->startTag("section"); $this->_xmlToolBox->addFullTag("title",$GLOBALS[$GLOBALS['PROJECT_NAME']]['JS']['SLS_BO_MENU_SITE'],"true"); $this->_xmlToolBox->addFullTag("href","#","true"); $this->_xmlToolBox->startTag("categories"); for($i=0 ; $i<$count=count($entries) ; $i++) { $position = ($i+1); $type = $entries[$i]["attributes"][0]["value"]; $name = $entries[$i]["attributes"][1]["value"]; if ($type == "category") { $childs = $xmlBo->getTagsAttributes("//sls_configs/entry[".$position."]/entry",array("type","name")); $comment = $name; if (SLS_String::startsWith($comment,"sls:lang:")) { $globalKey = strtoupper(SLS_String::substrAfterFirstDelimiter($comment,"sls:lang:")); $comment = (empty($GLOBALS[$GLOBALS['PROJECT_NAME']]['XSL'][$globalKey])) ? (empty($GLOBALS[$GLOBALS['PROJECT_NAME']]['JS'][$globalKey]) ? $name : $GLOBALS[$GLOBALS['PROJECT_NAME']]['JS'][$globalKey]) : $GLOBALS[$GLOBALS['PROJECT_NAME']]['XSL'][$globalKey]; } $this->_xmlToolBox->startTag("category",array("type"=>"category")); $this->_xmlToolBox->addFullTag("title",$comment,"true"); $this->_xmlToolBox->addFullTag("href","#","true"); if (!empty($childs)) { $this->_xmlToolBox->startTag("items"); for($j=0 ; $j<$count=count($childs) ; $j++) { $type = $childs[$j]["attributes"][0]["value"]; $name = $childs[$j]["attributes"][1]["value"]; $dbAlias = ucfirst(strtolower(SLS_String::substrBeforeFirstDelimiter($name,"_"))); $table = SLS_String::substrAfterFirstDelimiter($name,"_"); $right = SLS_BoRights::isAuthorized("read",$dbAlias."_".SLS_String::tableToClass($table)); if ($right == 1) { $comment = $comments[$dbAlias."_".SLS_String::tableToClass($table)]; if (SLS_String::startsWith($comment,"sls:lang:")) { $key = strtoupper(SLS_String::substrAfterFirstDelimiter($comment,"sls:lang:")); $comment = (empty($GLOBALS[$GLOBALS['PROJECT_NAME']]['XSL'][$key])) ? (empty($GLOBALS[$GLOBALS['PROJECT_NAME']]['JS'][$key]) ? $table : $GLOBALS[$GLOBALS['PROJECT_NAME']]['JS'][$key]) : $GLOBALS[$GLOBALS['PROJECT_NAME']]['XSL'][$key]; } $actionIdsModel = array($this->_generic->getActionId($this->_boController,"List".$dbAlias."_".SLS_String::tableToClass($table)), $this->_generic->getActionId($this->_boController,"Add".$dbAlias."_".SLS_String::tableToClass($table)), $this->_generic->getActionId($this->_boController,"Modify".$dbAlias."_".SLS_String::tableToClass($table)), $this->_generic->getActionId($this->_boController,"Clone".$dbAlias."_".SLS_String::tableToClass($table)), $this->_generic->getActionId($this->_boController,"Delete".$dbAlias."_".SLS_String::tableToClass($table))); if ($this->_generic->actionIdExists($this->_generic->getActionId($this->_boController,"List".$dbAlias."_".SLS_String::tableToClass($table)))) { $this->_xmlToolBox->startTag("item"); $this->_xmlToolBox->addFullTag("db",$dbAlias,true); $this->_xmlToolBox->addFullTag("model",SLS_String::tableToClass($table),true); $this->_xmlToolBox->addFullTag("title",$comment,"true"); $this->_xmlToolBox->addFullTag("like",(SLS_BoRights::isLike("read",$dbAlias."_".SLS_String::tableToClass($table))) ? "true" : "false","true"); $this->_xmlToolBox->addFullTag("selected",(in_array($this->_generic->getActionId(),$actionIdsModel)) ? "true" : "false","true"); $this->_xmlToolBox->addFullTag("href",$this->_generic->getFullPath($this->_boController,"List".$dbAlias."_".SLS_String::tableToClass($table)),"true"); $this->_xmlToolBox->endTag("item"); } } } $this->_xmlToolBox->endTag("items"); } $this->_xmlToolBox->endTag("category"); } else { $dbAlias = ucfirst(strtolower(SLS_String::substrBeforeFirstDelimiter($name,"_"))); $table = SLS_String::substrAfterFirstDelimiter($name,"_"); $right = SLS_BoRights::isAuthorized("read",$dbAlias."_".SLS_String::tableToClass($table)); if ($right == 1) { $comment = $comments[$dbAlias."_".SLS_String::tableToClass($table)]; if (SLS_String::startsWith($comment,"sls:lang:")) { $key = strtoupper(SLS_String::substrAfterFirstDelimiter($comment,"sls:lang:")); $comment = (empty($GLOBALS[$GLOBALS['PROJECT_NAME']]['XSL'][$key])) ? (empty($GLOBALS[$GLOBALS['PROJECT_NAME']]['JS'][$key]) ? $table : $GLOBALS[$GLOBALS['PROJECT_NAME']]['JS'][$key]) : $GLOBALS[$GLOBALS['PROJECT_NAME']]['XSL'][$key]; } $actionIdsModel = array($this->_generic->getActionId($this->_boController,"List".$dbAlias."_".SLS_String::tableToClass($table)), $this->_generic->getActionId($this->_boController,"Add".$dbAlias."_".SLS_String::tableToClass($table)), $this->_generic->getActionId($this->_boController,"Modify".$dbAlias."_".SLS_String::tableToClass($table)), $this->_generic->getActionId($this->_boController,"Clone".$dbAlias."_".SLS_String::tableToClass($table)), $this->_generic->getActionId($this->_boController,"Delete".$dbAlias."_".SLS_String::tableToClass($table))); if ($this->_generic->actionIdExists($this->_generic->getActionId($this->_boController,"List".$dbAlias."_".SLS_String::tableToClass($table)))) { $this->_xmlToolBox->startTag("category",array("type"=>"table")); $this->_xmlToolBox->addFullTag("db",$dbAlias,true); $this->_xmlToolBox->addFullTag("model",SLS_String::tableToClass($table),true); $this->_xmlToolBox->addFullTag("title",$comment,"true"); $this->_xmlToolBox->addFullTag("like",(SLS_BoRights::isLike("read",$dbAlias."_".SLS_String::tableToClass($table))) ? "true" : "false","true"); $this->_xmlToolBox->addFullTag("selected",(in_array($this->_generic->getActionId(),$actionIdsModel)) ? "true" : "false","true"); $this->_xmlToolBox->addFullTag("href",$this->_generic->getFullPath($this->_boController,"List".$dbAlias."_".SLS_String::tableToClass($table)),"true"); $this->_xmlToolBox->endTag("category"); } } } } $this->_xmlToolBox->endTag("categories"); $this->_xmlToolBox->endTag("section"); # /BOs } # i18n if ($this->_generic->actionIdExists($this->_generic->getActionId($this->_boController, "Boi18n")) && SLS_BoRights::isAuthorized("","",$this->_generic->getActionId($this->_boController, "Boi18n"))) { $file = $this->_http->getParam("File"); $this->_xmlToolBox->startTag("section"); $this->_xmlToolBox->addFullTag("title",$GLOBALS[$GLOBALS['PROJECT_NAME']]['JS']['SLS_BO_MENU_I18N'],"true"); $this->_xmlToolBox->addFullTag("selected",($this->_generic->getActionId() == $this->_generic->getActionId($this->_boController, "Boi18n")) ? "true" : "false","true"); $this->_xmlToolBox->addFullTag("href","#","true"); $this->_xmlToolBox->startTag("categories"); $controllers = $this->_generic->getControllersXML()->getTags("//controllers/controller[@side='user']/@name"); sort($controllers,SORT_STRING); for($i=0 ; $i<$count=count($controllers) ; $i++) { $actions = $this->_generic->getControllersXML()->getTags("//controllers/controller[@name='".$controllers[$i]."' and @side='user']/scontrollers/scontroller/@name"); sort($actions,SORT_STRING); $this->_xmlToolBox->startTag("category",array("type"=>"category")); $this->_xmlToolBox->addFullTag("title",$controllers[$i],"true"); $this->_xmlToolBox->addFullTag("selected",($this->_generic->getActionId() == $this->_generic->getActionId($this->_boController, "Boi18n") && SLS_String::startsWith($file, "Actions|".$controllers[$i]."|")) ? "true" : "false","true"); $this->_xmlToolBox->addFullTag("href","#","true"); $this->_xmlToolBox->startTag("items"); if (file_exists($this->_generic->getPathConfig("actionLangs").$controllers[$i]."/__".$controllers[$i].".".$this->_lang->getLang().".lang.php") && ($translations = file_get_contents($this->_generic->getPathConfig("actionLangs").$controllers[$i]."/__".$controllers[$i].".".$this->_lang->getLang().".lang.php")) && SLS_String::contains(str_replace("","",$translations),'*/'."\n".'$GLOBALS') || (!SLS_String::contains($translations,"/**") && SLS_String::contains($translations,'$GLOBALS'))) { $this->_xmlToolBox->startTag("item"); $this->_xmlToolBox->addFullTag("title","__".$controllers[$i],"true"); $this->_xmlToolBox->addFullTag("selected",($this->_generic->getActionId() == $this->_generic->getActionId($this->_boController, "Boi18n") && $file == "Actions|".$controllers[$i]."|__".$controllers[$i]) ? "true" : "false","true"); $this->_xmlToolBox->addFullTag("href",$this->_generic->getFullPath($this->_boController, "Boi18n", array("File" => "Actions|".$controllers[$i]."|__".$controllers[$i])),"true"); $this->_xmlToolBox->endTag("item"); } for($j=0 ; $j<$countJ=count($actions) ; $j++) { if (file_exists($this->_generic->getPathConfig("actionLangs").$controllers[$i]."/".$actions[$j].".".$this->_lang->getLang().".lang.php") && ($translations = file_get_contents($this->_generic->getPathConfig("actionLangs").$controllers[$i]."/".$actions[$j].".".$this->_lang->getLang().".lang.php")) && SLS_String::contains(str_replace("","",$translations),'*/'."\n".'$GLOBALS') || (!SLS_String::contains($translations,"/**") && SLS_String::contains($translations,'$GLOBALS'))) { $this->_xmlToolBox->startTag("item"); $this->_xmlToolBox->addFullTag("title",$actions[$j],"true"); $this->_xmlToolBox->addFullTag("selected",($this->_generic->getActionId() == $this->_generic->getActionId($this->_boController, "Boi18n") && $file == "Actions|".$controllers[$i]."|".$actions[$j]) ? "true" : "false","true"); $this->_xmlToolBox->addFullTag("href",$this->_generic->getFullPath($this->_boController, "Boi18n", array("File" => "Actions|".$controllers[$i]."|".$actions[$j])),"true"); $this->_xmlToolBox->endTag("item"); } } $this->_xmlToolBox->endTag("items"); $this->_xmlToolBox->endTag("category"); } if (file_exists($this->_generic->getPathConfig("genericLangs")."site.".$this->_lang->getLang().".lang.php") && ($translations = file_get_contents($this->_generic->getPathConfig("genericLangs")."site.".$this->_lang->getLang().".lang.php")) && SLS_String::contains(str_replace("","",$translations),'*/'."\n".'$GLOBALS') || (!SLS_String::contains($translations,"/**") && SLS_String::contains($translations,'$GLOBALS'))) { $this->_xmlToolBox->startTag("category",array("type"=>"table")); $this->_xmlToolBox->addFullTag("title","__".$GLOBALS[$GLOBALS['PROJECT_NAME']]['JS']['SLS_BO_MENU_I18N_SITE'],"true"); $this->_xmlToolBox->addFullTag("selected",($this->_generic->getActionId() == $this->_generic->getActionId($this->_boController, "Boi18n") && $file == "Generics|site") ? "true" : "false","true"); $this->_xmlToolBox->addFullTag("href",$this->_generic->getFullPath($this->_boController, "Boi18n", array("File" => "Generics|site")),"true"); $this->_xmlToolBox->endTag("category"); } $this->_xmlToolBox->endTag("categories"); $this->_xmlToolBox->endTag("section"); } # /i18n # CkFinder if ($this->_generic->actionIdExists($this->_generic->getActionId($this->_boController, "BoFileUpload")) && SLS_BoRights::isAuthorized("","",$this->_generic->getActionId($this->_boController, "BoFileUpload"))) { $this->_xmlToolBox->startTag("section"); $this->_xmlToolBox->addFullTag("title",$GLOBALS[$GLOBALS['PROJECT_NAME']]['JS']['SLS_BO_MENU_FILE_MANAGER'],"true"); $this->_xmlToolBox->addFullTag("selected",($this->_generic->getActionId() == $this->_generic->getActionId($this->_boController,"BoFileUpload")) ? "true" : "false","true"); $this->_xmlToolBox->addFullTag("href",$this->_generic->getFullPath($this->_boController,"BoFileUpload"),"true"); $this->_xmlToolBox->endTag("section"); } # /CkFinder # ProjectSettings if ($this->_generic->actionIdExists($this->_generic->getActionId($this->_boController, "BoProjectSettings")) && SLS_BoRights::isAuthorized("","",$this->_generic->getActionId($this->_boController, "BoProjectSettings"))) { $this->_xmlToolBox->startTag("section"); $this->_xmlToolBox->addFullTag("title",$GLOBALS[$GLOBALS['PROJECT_NAME']]['JS']['SLS_BO_MENU_PROJECT_SETTINGS'],"true"); $this->_xmlToolBox->addFullTag("selected",($this->_generic->getActionId() == $this->_generic->getActionId($this->_boController,"BoProjectSettings")) ? "true" : "false","true"); $this->_xmlToolBox->addFullTag("href",$this->_generic->getFullPath($this->_boController,"BoProjectSettings"),"true"); $this->_xmlToolBox->endTag("section"); } # /ProjectSettings # Users if ($this->_generic->actionIdExists($this->_generic->getActionId($this->_boController, "BoUserList")) && SLS_BoRights::isAuthorized("","",$this->_generic->getActionId($this->_boController, "BoUserList"))) { $actionsUser = array($this->_generic->getActionId($this->_boController, "BoUserList"), $this->_generic->getActionId($this->_boController, "BoUserAdd"), $this->_generic->getActionId($this->_boController, "BoUserModify"), $this->_generic->getActionId($this->_boController, "BoUserDelete"), $this->_generic->getActionId($this->_boController, "BoUserStatus")); $this->_xmlToolBox->startTag("section"); $this->_xmlToolBox->addFullTag("title",$GLOBALS[$GLOBALS['PROJECT_NAME']]['JS']['SLS_BO_MENU_USERS'],"true"); $this->_xmlToolBox->addFullTag("selected",(in_array($this->_generic->getActionId(),$actionsUser)) ? "true" : "false","true"); $this->_xmlToolBox->addFullTag("href",$this->_generic->getFullPath($this->_boController,"BoUserList"),"true"); $this->_xmlToolBox->endTag("section"); } # /Users # Developer actions $boActions = $this->_generic->getControllersXML()->getTags("//controllers/controller[@isBo='true']/scontrollers/scontroller/@name"); for($i=0 ; $i<$count=count($boActions) ; $i++) { // If dev action & admin authorized if (!SLS_String::startsWith($boActions[$i],"Bo") && // Sls generated actions !SLS_String::startsWith($boActions[$i],"List") && // User action ListDb_Model !SLS_String::startsWith($boActions[$i],"Add") && // User action AddDb_Model !SLS_String::startsWith($boActions[$i],"Modify") && // User action ModifyDb_Model !SLS_String::startsWith($boActions[$i],"Delete") && // User action DeleteDb_Model !SLS_String::startsWith($boActions[$i],"Clone") && // User action CloneDb_Model !SLS_String::startsWith($boActions[$i],"Email") && // User action EmailDb_Model SLS_BoRights::isAuthorized("","",$this->_generic->getActionId($this->_boController, $boActions[$i]))) { $this->_xmlToolBox->startTag("section"); $this->_xmlToolBox->addFullTag("title",$this->_generic->getControllersXML()->getTag("//controllers/controller[@isBo='true']/scontrollers/scontroller[@name='".$boActions[$i]."']/scontrollerLangs/scontrollerLang[@lang='".$this->_lang->getLang()."']"),"true"); $this->_xmlToolBox->addFullTag("selected",($this->_generic->getActionId() == $this->_generic->getActionId($this->_boController, $boActions[$i])) ? "true" : "false", "true"); $this->_xmlToolBox->addFullTag("href",$this->_generic->getFullPath($this->_boController,$boActions[$i]),"true"); $this->_xmlToolBox->endTag("section"); } } # /Developer actions $this->_xmlToolBox->endTag("nav"); } # /Nav # Admin $xmlRight = new SLS_XMLToolbox(file_get_contents($this->_generic->getPathConfig("configSls")."/rights.xml")); $adminName = $this->_session->getParam("SLS_BO_USER_NAME"); $adminFirstname = $this->_session->getParam("SLS_BO_USER_FIRSTNAME"); if (!empty($adminName) && !empty($adminFirstname)) $imgPath = $this->_generic->getPathConfig("files")."__Uploads/images/bo/".SLS_String::stringToUrl($adminName."_".$adminFirstname,"_").".jpg"; else $imgPath = $this->_generic->getPathConfig("coreImg")."BO-2014/Pictos/default_dev_account_small.jpg"; $this->_xmlToolBox->startTag("admin"); $this->_xmlToolBox->addFullTag("img",(file_exists($imgPath) && !is_dir($imgPath)) ? $this->_generic->getSiteConfig("protocol")."://".$this->_generic->getSiteConfig("domainName")."/".$imgPath : $this->_generic->getSiteConfig("protocol")."://".$this->_generic->getSiteConfig("domainName")."/".$this->_generic->getPathConfig("files")."__Uploads/images/bo/default_account.jpg",true); $this->_xmlToolBox->addFullTag("login",$this->_session->getParam("SLS_BO_USER"),true); $this->_xmlToolBox->addFullTag("name",ucwords(strtolower((!empty($adminName)) ? $adminName : "Developer")),true); $this->_xmlToolBox->addFullTag("firstname",((!empty($adminFirstname)) ? ucwords(strtolower($adminFirstname)) : "SillySmart"),true); $this->_xmlToolBox->addFullTag("type",SLS_BoRights::getAdminType(),true); $nodeExists = $xmlRight->getTag("//sls_configs/entry[@login='******']/@login"); if (!empty($nodeExists)) { $settings = array_combine($xmlRight->getTags("//sls_configs/entry[@login='******']/settings/setting/@key"),$xmlRight->getTags("//sls_configs/entry[@login='******']/settings/setting")); $this->_xmlToolBox->startTag("settings"); foreach($settings as $key => $value) $this->_xmlToolBox->addFullTag("setting",$value,true,array("key"=>$key)); $this->_xmlToolBox->endTag("settings"); } $xmlBoColors = new SLS_XMLToolbox(file_get_contents($this->_generic->getPathConfig("configSls")."/bo_colors.xml")); $boColors = $xmlBoColors->getTagsAttributes("//sls_configs/template",array("name","hexa")); $this->_xmlToolBox->startTag("colors"); for($i=0 ; $i<$count=count($boColors) ; $i++) $this->_xmlToolBox->addFullTag("color",$boColors[$i]["attributes"][0]["value"],true,array("hexa" => $boColors[$i]["attributes"][1]["value"])); $this->_xmlToolBox->endTag("colors"); $this->_xmlToolBox->endTag("admin"); # /Admin # URLs $this->_xmlToolBox->startTag("various"); $this->_xmlToolBox->addFullTag("dashboard",$this->_generic->getFullPath($this->_boController,"BoDashBoard"),true,array("selected" => ($this->_generic->getActionId() == $this->_generic->getActionId($this->_boController,"BoDashBoard")) ? "true" : "false")); $this->_xmlToolBox->addFullTag("export",$this->_generic->getFullPath($this->_boController,"BoExport"),true); $this->_xmlToolBox->addFullTag("ac",$this->_generic->getFullPath($this->_boController,"BoFkAc"),true); $this->_xmlToolBox->addFullTag("like",$this->_generic->getFullPath($this->_boController,"BoLike"),true); $this->_xmlToolBox->addFullTag("setting",$this->_generic->getFullPath($this->_boController,"BoSetting"),true); $this->_xmlToolBox->addFullTag("unique",$this->_generic->getFullPath($this->_boController,"BoUnique"),true); $this->_xmlToolBox->addFullTag("upload",$this->_generic->getFullPath($this->_boController,"BoUpload"),true); $this->_xmlToolBox->addFullTag("upload_progress",$this->_generic->getFullPath($this->_boController,"BoUploadProgress"),true); $this->_xmlToolBox->addFullTag("delete_file",$this->_generic->getFullPath($this->_boController,"BoDeleteFile"),true); $this->_xmlToolBox->addFullTag("login",$this->_generic->getFullPath($this->_boController,"BoLogin"),true); $this->_xmlToolBox->addFullTag("logout",(SLS_BoRights::getAdminType() == "developer") ? $this->_generic->getFullPath("SLS_Bo","Logout",array("Redirect" => $this->_generic->getActionId($this->_boController,"BoLogin"), "Lang" => $this->_lang->getLang()),true,"en") : $this->_generic->getFullPath($this->_boController,"BoLogout"),true); $this->_xmlToolBox->addFullTag("forgotten_pwd",$this->_generic->getFullPath($this->_boController,"BoForgottenPwd"),true); $this->_xmlToolBox->addFullTag("renew_pwd",$this->_generic->getFullPath($this->_boController,"BoRenewPwd",array("Login"=>$this->_session->getParam("SLS_BO_USER"))),true); $this->_xmlToolBox->addFullTag("is_logged",$this->_generic->getFullPath($this->_boController,"BoIsLogged"),true); $this->_xmlToolBox->addFullTag("switch_lang",$this->_generic->getFullPath($this->_boController,"BoSwitchLang",array("Lang"=>""),false),true); $this->_xmlToolBox->addFullTag("user_add",$this->_generic->getFullPath($this->_boController,"BoUserAdd"),true,array("authorized" => (SLS_BoRights::isAuthorized("","",$this->_generic->getActionId($this->_boController,"BoUserAdd"))) ? "true" : "false")); $this->_xmlToolBox->addFullTag("user_modify",$this->_generic->getFullPath($this->_boController,"BoUserModify",array("id" => ''),false),true,array("authorized" => (SLS_BoRights::isAuthorized("","",$this->_generic->getActionId($this->_boController,"BoUserModify"))) ? "true" : "false")); $this->_xmlToolBox->addFullTag("user_delete",$this->_generic->getFullPath($this->_boController,"BoUserDelete",array("id" => ''),false),true,array("authorized" => (SLS_BoRights::isAuthorized("","",$this->_generic->getActionId($this->_boController,"BoUserDelete"))) ? "true" : "false")); $this->_xmlToolBox->addFullTag("user_status",$this->_generic->getFullPath($this->_boController,"BoUserStatus",array("id" => ''),false),true,array("authorized" => (SLS_BoRights::isAuthorized("","",$this->_generic->getActionId($this->_boController,"BoUserStatus"))) ? "true" : "false")); $this->_xmlToolBox->endTag("various"); # /URLs # Server $apcUpload = (in_array(ini_get("apc.rfc1867"),array(1,"1","On","on",true,"true"))) ? "true" : "false"; $apcUploadKey = ini_get("apc.rfc1867_name"); $uploadMaxFilesize = ini_get("upload_max_filesize"); $unite = strtolower(substr(trim($uploadMaxFilesize), -1)); switch ($unite) { case 'k': $uploadMaxFilesize = (int)$uploadMaxFilesize * 1024; break; case 'm': $uploadMaxFilesize = (int)$uploadMaxFilesize * 1024 * 1024; break; case 'g': $uploadMaxFilesize = (int)$uploadMaxFilesize * 1024 * 1024 * 1024; break; default: $uploadMaxFilesize = $uploadMaxFilesize; break; } $this->_xmlToolBox->startTag("server"); $this->_xmlToolBox->addFullTag("apc_upload",$apcUpload,true); $this->_xmlToolBox->addFullTag("apc_upload_key",$apcUploadKey,true); $this->_xmlToolBox->addFullTag("upload_max_size",$uploadMaxFilesize,true); $this->_xmlToolBox->endTag("server"); # /Server } }