public function action() { $user = $this->hasAuthorative(); $xml = $this->getXML(); $xml = $this->makeMenu($xml); $xmlBo = new SLS_XMLToolbox(file_get_contents($this->_generic->getPathConfig("configSls")."/bo.xml")); $param = $this->_http->getParam("name"); $model = SLS_String::substrAfterFirstDelimiter($param,"_"); $alias = SLS_String::substrBeforeFirstDelimiter($param,"_"); if ($this->_http->getParam("type") == "") $actionsTypes = array("list","add","modify","delete","clone"); else $actionsTypes = array($this->_http->getParam("type")); foreach($actionsTypes as $actionType) $this->deleteActionBo($model,$actionType,$alias); # Node into bo.xml $boPath = "//sls_configs/entry[@type='table' and @name='".strtolower($alias."_".$model)."']"; $boExists = $xmlBo->getTag($boPath."/@type"); if (empty($boExists)) $boPath = "//sls_configs/entry/entry[@type='table' and @name='".strtolower($alias."_".$model)."']"; $boExists = $xmlBo->getTag($boPath); if (!empty($boExists)) { $xmlBo->deleteTags($boPath, count($xmlBo->getTags($boPath))); $xmlBo->saveXML($this->_generic->getPathConfig("configSls")."/bo.xml",$xmlBo->getXML()); $xmlBo->refresh(); } # /Node into bo.xml $controllers = $this->_generic->getTranslatedController("SLS_Bo","Bo"); $this->_generic->redirect($controllers["controller"]."/".$controllers["scontroller"]); }
/** * Constructor * * @access public * @since 1.0 */ public function __construct() { $this->_generic = SLS_Generic::getInstance(); $this->_cache = $this->_generic->getObjectCache(); $this->_xmlToolBox = new SLS_XMLToolbox(); $this->_xmlToolBox->startTag("Components"); $this->_xmlToolBox->addFullTag("Sls", "", false); if ($this->_generic->getSide() == "user" || ($this->_generic->getActionId() == $this->_generic->getActionId("SLS_Bo","ProdSettings"))) $this->_xmlToolBox->addFullTag("Site", "", false); $this->_xmlToolBox->endTag("Components"); $this->_isCache = $this->_generic->isCache(); $this->_cacheXML = new SLS_XMLToolbox(false); if (!$this->_isCache) $this->_cacheXML->startTag("components"); // Load Core Statics $this->recursiveStaticLoading($this->_generic->getPathConfig("coreComponentsControllers"), 'Sls'); if ($this->_generic->getSide() == "user" || ($this->_generic->getActionId() == $this->_generic->getActionId("SLS_Bo","ProdSettings"))) $this->recursiveStaticLoading($this->_generic->getPathConfig("componentsControllers"), 'Site'); if (!$this->_isCache) { $this->_cacheXML->endTag("components"); $writeXML = new SLS_XMLToolbox(file_get_contents($this->_generic->getPathConfig("configSecure")."cache.xml")); $writeXML->overwriteTags("//statics", $this->_cacheXML->getXML('noHeader')); $writeXML->saveXML($this->_generic->getPathConfig("configSecure")."cache.xml"); } return $this->getXML(); }
public function action() { $user = $this->hasAuthorative(); $xml = $this->getXML(); $xml = $this->makeMenu($xml); // SLS_XmlToolbox objects $controllerXML = $this->_generic->getControllersXML(); $metaXML = new SLS_XMLToolbox(file_get_contents($this->_generic->getPathConfig("configSls")."metas.xml")); $siteXML = $this->_generic->getSiteXML(); // Get the lang $lang = $this->_http->getParam("name"); $langs = $this->_generic->getObjectLang()->getSiteLangs(); if (in_array($lang,$langs)) { // controllers.xml $controllerXML->deleteTags("//controllers/controller[@side!='sls']/controllerLangs/controllerLang[@lang='".$lang."']"); $controllerXML->deleteTags("//controllers/controller[@side!='sls']/scontrollers/scontroller/scontrollerLangs/scontrollerLang[@lang='".$lang."']"); $controllerXML->saveXML($this->_generic->getPathConfig("configSecure")."controllers.xml"); // /controllers.xml // metas.xml $metaXML->deleteTags("//sls_configs/action/title[@lang='".$lang."']"); $metaXML->deleteTags("//sls_configs/action/description[@lang='".$lang."']"); $metaXML->deleteTags("//sls_configs/action/keywords[@lang='".$lang."']"); $metaXML->saveXML($this->_generic->getPathConfig("configSls")."metas.xml"); // /metas.xml // site.xml $siteXML->deleteTags("//configs/langs/name[".(array_shift(array_keys($langs,$lang))+1)."]"); $siteXML->saveXML($this->_generic->getPathConfig("configSecure")."site.xml"); // /site.xml // generic.iso.lang.php @unlink($this->_generic->getPathConfig("coreGenericLangs")."generic.".$lang.".lang.php"); // /generic.iso.lang.php // site.iso.lang.php @unlink($this->_generic->getPathConfig("genericLangs")."site.".$lang.".lang.php"); // /site.iso.lang.php // Actions langs files $this->deleteActionsLang($this->_generic->getPathConfig("actionLangs"),$lang); // /Actions langs files } $controllers = $this->_generic->getTranslatedController("SLS_Bo","Langs"); $this->_generic->redirect($controllers['controller']."/".$controllers['scontroller'].".sls"); }
public function action() { $user = $this->hasAuthorative(); // Get informations $table = $this->_http->getParam("table"); $column = $this->_http->getParam("column"); $pathsHandle = file_get_contents($this->_generic->getPathConfig("configSls")."/types.xml"); $xmlType = new SLS_XMLToolbox($pathsHandle); $xmlType->saveXML($this->_generic->getPathConfig("configSls")."/types.xml",$xmlType->deleteTags("//sls_configs/entry[@table='".$table."' and @column='".$column."']")); // Force update $this->_generic->goDirectTo("SLS_Bo","UpdateModel",array(array("key"=>"name","value"=>$table))); }
public function action() { // Objects $user = $this->hasAuthorative(); $name = SLS_String::trimSlashesFromString($this->_http->getParam("name")); $pathsHandle = file_get_contents($this->_generic->getPathConfig("configSls")."/rights.xml"); $xmlRights = new SLS_XMLToolbox($pathsHandle); $result = $xmlRights->getTags("//sls_configs/entry[@login='******']"); if (!empty($result)) { $xmlRights->deleteTags('//sls_configs/entry[@login="******"]'); $xmlRights->saveXML($this->_generic->getPathConfig("configSls")."/rights.xml",$xmlRights->getXML()); } $this->_generic->redirect("Manage/Rights"); }
public function action() { // Params $name = SLS_String::trimSlashesFromString($this->_http->getParam("name")); // Objects $user = $this->hasAuthorative(); $xmlRights = new SLS_XMLToolbox(file_get_contents($this->_generic->getPathConfig("configSls")."/rights.xml")); $result = $xmlRights->getTags("//sls_configs/entry[@login='******']"); if (!empty($result)) { $xmlRights->setTagAttributes('//sls_configs/entry[@login="******"]', array("enabled" => ($xmlRights->getTag('//sls_configs/entry[@login="******"]/@enabled')=='false') ? 'true' : 'false')); $xmlRights->saveXML($this->_generic->getPathConfig("configSls")."/rights.xml"); } $this->_generic->forward("SLS_Bo","ManageRights"); }
public function action() { $user = $this->hasAuthorative(); // Objects $xmlFk = new SLS_XMLToolbox(file_get_contents($this->_generic->getPathConfig("configSls")."/fks.xml")); $xmlBearer = new SLS_XMLToolbox(file_get_contents($this->_generic->getPathConfig("configSls")."/bearers.xml")); // Get the table & class name $table = SLS_String::substrAfterFirstDelimiter($this->_http->getParam("name"),"_"); $db = SLS_String::substrBeforeFirstDelimiter($this->_http->getParam("name"),"_"); $class = ucfirst($db)."_".SLS_String::tableToClass($table); $result = array_shift($xmlBearer->getTagsAttributes("//sls_configs/entry[@tableBearer='".$class."']",array("table1"))); if (!empty($result)) $xmlBearer->saveXML($this->_generic->getPathConfig("configSls")."/bearers.xml",$xmlBearer->deleteTags("//sls_configs/entry[@tableBearer='".$class."']")); $this->_generic->forward("SLS_Bo","EditModel",array(array("key"=>"name","value"=>$this->_http->getParam("name")))); }
/** * Check if an admin is authorized to log in * * @access public static * @param string $login login * @param string $pwd password * @return mixed 1 if connected, 0 if expired, -1 not logged, -2 disabled * @since 1.0 */ public static function connect($login,$pwd) { $generic = SLS_Generic::getInstance(); $session = $generic->getObjectSession(); $sessionToken = substr(substr(sha1($generic->getSiteConfig("privateKey")),12,31).substr(sha1($generic->getSiteConfig("privateKey")),4,11),6); $pathsHandle = file_get_contents($generic->getPathConfig("configSls")."/rights.xml"); $xmlRights = new SLS_XMLToolbox($pathsHandle); $result = array_shift($xmlRights->getTagsAttributes("//sls_configs/entry[@login='******' and @password='******' and count(action) > 0]",array("login"))); if (!empty($result)) { $attributes = array_shift($xmlRights->getTagsAttributes("//sls_configs/entry[@login='******' and @password='******']",array("reset_pwd","renew_pwd","last_renew_pwd","name","firstname","last_connection","enabled"))); $reset_pwd = $attributes["attributes"][0]["value"]; $renew_pwd = $attributes["attributes"][1]["value"]; $last_renew_pwd = $attributes["attributes"][2]["value"]; $name = $attributes["attributes"][3]["value"]; $firstname = $attributes["attributes"][4]["value"]; $lastLogin = $attributes["attributes"][5]["value"]; $enabled = $attributes["attributes"][6]["value"]; if ($reset_pwd == "true" || (!empty($last_renew_pwd) && !empty($renew_pwd) && (strtotime("+".$renew_pwd, SLS_Date::dateToTimestamp($last_renew_pwd)) < SLS_Date::dateToTimestamp(date("Y-m-d"))))) return 0; if ($enabled == "false") return -2; $xmlRights->setTagAttributes("//sls_configs/entry[@login='******']",array("last_connection" => date("Y-m-d H:i:s"))); $xmlRights->saveXML($generic->getPathConfig("configSls")."/rights.xml",$xmlRights->getXML()); $session->setParam("SLS_BO_VALID_".$sessionToken,"true"); $session->setParam("SLS_BO_USER_".$sessionToken,$login); $session->setParam("SLS_BO_PREVIOUS_LOGIN",$lastLogin); $session->setParam("SLS_BO_LOGGED","true"); $session->setParam("SLS_BO_USER",$login); $session->setParam("SLS_BO_USER_NAME",$name); $session->setParam("SLS_BO_USER_FIRSTNAME",$firstname); $session->setParam("ckfinderAuthorized",true); return 1; } else return -1; }
/** * Construct the XML * * @access public * @since 1.0 */ public function constructXML() { $this->_cacheXML = new SLS_XMLToolbox(false); $this->_cacheActive = $this->_generic->isCache(); $this->_xmlToolBox->startTag("XslStatics"); // Recover path of Statics Unloaded #$dirStaticsUnloaded = $this->_generic->getPathConfig("viewsGenericsUnloaded"); $dirStaticsUnloaded = $this->_generic->getPathConfig("viewsGenerics"); // Recover path of Statics Loaded Body #$dirStaticsLoadedBody = $this->_generic->getPathConfig("viewsGenericsLoadedBody"); // Recover path of Statics Loaded Headers #$dirStaticsLoadedHeaders = $this->_generic->getPathConfig("viewsGenericsLoadedHeaders"); // Recover path of SLS Statics Unloaded $dirSlsStaticsUnloaded = $this->_generic->getPathConfig("slsViewsGenericsUnloaded"); // Recover path of SLS Statics Loaded Body $dirSlsStaticsLoadedBody = $this->_generic->getPathConfig("slsViewsGenericsLoadedBody"); // Recover path of SLS Statics Loaded Headers $dirSlsStaticsLoadedHeaders = $this->_generic->getPathConfig("slsViewsGenericsLoadedHeaders"); // Recover path of Core Statics Unloaded $dirCoreStaticsUnloaded = $this->_generic->getPathConfig("coreViewsGenericsUnloaded"); // Recover path of Core Statics Loaded Body $dirCoreStaticsLoadedBody = $this->_generic->getPathConfig("coreViewsGenericsLoadedBody"); // Recover path of Core Statics Loaded Headers $dirCoreStaticsLoadedHeaders = $this->_generic->getPathConfig("coreViewsGenericsLoadedHeaders"); $xslHandle = file_get_contents($this->_generic->getPathConfig("configSecure")."cache.xml"); // If cache not active if (!$this->_cacheActive) { $this->_xmlToolBox->startTag("files"); $this->_cacheXML->startTag("xsls"); $this->_cacheXML->startTag("files"); // Put in cache.xml User Unloaded Files but in current XML only if side == 'user' ($this->_generic->getSide() == "user") ? $this->_xmlToolBox->startTag("Unloaded") : ""; $this->_cacheXML->startTag("Unloaded"); $this->_arrayStatics['unloaded']['templateName'] = array(); $this->_arrayStatics['unloaded']['path'] = array(); $this->_arrayStatics['unloaded']['filename'] = array(); $this->recursiveRead($dirStaticsUnloaded, false, $this->_arrayStatics['unloaded']['templateName'], $this->_arrayStatics['unloaded']['path'], $this->_arrayStatics['unloaded']['filename']); array_multisort($this->_arrayStatics['unloaded']['filename'], SORT_ASC, SORT_STRING, $this->_arrayStatics['unloaded']['path'], SORT_ASC, SORT_STRING); for($i=0;$i<count($this->_arrayStatics['unloaded']['filename']);$i++) { $this->_cacheXML->startTag("xsl"); ($this->_generic->getSide() == "user") ? $this->_xmlToolBox->startTag("xsl") : ""; ($this->_generic->getSide() == "user") ? $this->_xmlToolBox->addFullTag("file", $this->_arrayStatics['unloaded']['path'][$i], true) : ""; $this->_cacheXML->addFullTag("file", $this->_arrayStatics['unloaded']['path'][$i], true); ($this->_generic->getSide() == "user") ? $this->_xmlToolBox->endTag("xsl") : ""; $this->_cacheXML->endTag("xsl"); } unset($this->_arrayStatics['unloaded']); $this->_cacheXML->endTag("Unloaded"); ($this->_generic->getSide() == "user") ? $this->_xmlToolBox->endTag("Unloaded") : ""; // Put in cache.xml the SLS Unloaded Files but in current XML only if side == 'sls' ($this->_generic->getSide() == "sls") ? $this->_xmlToolBox->startTag("Unloaded") : ""; $this->_cacheXML->startTag("SlsUnloaded"); $this->_arrayStatics['unloaded']['templateName'] = array(); $this->_arrayStatics['unloaded']['path'] = array(); $this->_arrayStatics['unloaded']['filename'] = array(); $this->recursiveRead($dirSlsStaticsUnloaded, false, $this->_arrayStatics['unloaded']['templateName'], $this->_arrayStatics['unloaded']['path'], $this->_arrayStatics['unloaded']['filename']); array_multisort($this->_arrayStatics['unloaded']['filename'], SORT_ASC, SORT_STRING, $this->_arrayStatics['unloaded']['path'], SORT_ASC, SORT_STRING); for($i=0;$i<count($this->_arrayStatics['unloaded']['filename']);$i++) { $this->_cacheXML->startTag("xsl"); ($this->_generic->getSide() == "sls") ? $this->_xmlToolBox->startTag("xsl") : ""; ($this->_generic->getSide() == "sls") ? $this->_xmlToolBox->addFullTag("file", $this->_arrayStatics['unloaded']['path'][$i], true) : ""; $this->_cacheXML->addFullTag("file", $this->_arrayStatics['unloaded']['path'][$i], true); ($this->_generic->getSide() == "sls") ? $this->_xmlToolBox->endTag("xsl") : ""; $this->_cacheXML->endTag("xsl"); } unset($this->_arrayStatics['unloaded']); $this->_cacheXML->endTag("SlsUnloaded"); ($this->_generic->getSide() == "sls") ? $this->_xmlToolBox->endTag("Unloaded") : ""; // Put in cache.xml the Core Unloaded Files &&t in current XML $this->_xmlToolBox->startTag("CoreUnloaded"); $this->_cacheXML->startTag("CoreUnloaded"); $this->_arrayStatics['unloaded']['templateName'] = array(); $this->_arrayStatics['unloaded']['path'] = array(); $this->_arrayStatics['unloaded']['filename'] = array(); $this->recursiveRead($dirCoreStaticsUnloaded, false, $this->_arrayStatics['unloaded']['templateName'], $this->_arrayStatics['unloaded']['path'], $this->_arrayStatics['unloaded']['filename']); array_multisort($this->_arrayStatics['unloaded']['filename'], SORT_ASC, SORT_STRING, $this->_arrayStatics['unloaded']['path'], SORT_ASC, SORT_STRING); for($i=0;$i<count($this->_arrayStatics['unloaded']['filename']);$i++) { $this->_cacheXML->startTag("xsl"); $this->_xmlToolBox->startTag("xsl"); $this->_xmlToolBox->addFullTag("file", $this->_arrayStatics['unloaded']['path'][$i], true); $this->_cacheXML->addFullTag("file", $this->_arrayStatics['unloaded']['path'][$i], true); $this->_xmlToolBox->endTag("xsl"); $this->_cacheXML->endTag("xsl"); } unset($this->_arrayStatics['unloaded']); $this->_cacheXML->endTag("CoreUnloaded"); $this->_xmlToolBox->endTag("CoreUnloaded"); // Put in cache.xml the User loaded Body Files but in current XML only if side == user ($this->_generic->getSide() == "user") ? $this->_xmlToolBox->startTag("Loaded") : ""; $this->_cacheXML->startTag("Loaded"); /*($this->_generic->getSide() == "user") ? $this->_xmlToolBox->startTag("Body") : ""; $this->_cacheXML->startTag("Body"); $this->_arrayStatics['loadedBody']['templateName'] = array(); $this->_arrayStatics['loadedBody']['path'] = array(); $this->_arrayStatics['loadedBody']['filename'] = array(); $this->recursiveRead($dirStaticsLoadedBody, true, $this->_arrayStatics['loadedBody']['templateName'], $this->_arrayStatics['loadedBody']['path'], $this->_arrayStatics['loadedBody']['filename']); array_multisort($this->_arrayStatics['loadedBody']['filename'], SORT_ASC, SORT_STRING, $this->_arrayStatics['loadedBody']['path'], SORT_ASC, SORT_STRING, $this->_arrayStatics['loadedBody']['templateName'], SORT_ASC, SORT_STRING); for($i=0;$i<count($this->_arrayStatics['loadedBody']['filename']);$i++) { $this->_cacheXML->startTag("xsl"); ($this->_generic->getSide() == "user") ? $this->_xmlToolBox->startTag("xsl") : ""; ($this->_generic->getSide() == "user") ? $this->_xmlToolBox->addFullTag("file", $this->_arrayStatics['loadedBody']['path'][$i], true) : ""; $this->_cacheXML->addFullTag("file", $this->_arrayStatics['loadedBody']['path'][$i], true); ($this->_generic->getSide() == "user") ? $this->_xmlToolBox->addFullTag("templateName", $this->_arrayStatics['loadedBody']['templateName'][$i], true) : ""; $this->_cacheXML->addFullTag("templateName", $this->_arrayStatics['loadedBody']['templateName'][$i], true); ($this->_generic->getSide() == "user") ? $this->_xmlToolBox->endTag("xsl") : ""; $this->_cacheXML->endTag("xsl"); } unset($this->_arrayStatics['loadedBody']); $this->_cacheXML->endTag("Body"); ($this->_generic->getSide() == "user") ?$this->_xmlToolBox->endTag("Body") : "";*/ // Put in cache.xml the Sls loaded Body Files but in current XML only if side == sls ($this->_generic->getSide() == "sls") ? $this->_xmlToolBox->startTag("Loaded") : ""; /*($this->_generic->getSide() == "sls") ? $this->_xmlToolBox->startTag("Body") : ""; $this->_cacheXML->startTag("SlsBody"); $this->_arrayStatics['loadedBody']['templateName'] = array(); $this->_arrayStatics['loadedBody']['path'] = array(); $this->_arrayStatics['loadedBody']['filename'] = array(); $this->recursiveRead($dirStaticsLoadedBody, true, $this->_arrayStatics['loadedBody']['templateName'], $this->_arrayStatics['loadedBody']['path'], $this->_arrayStatics['loadedBody']['filename']); array_multisort($this->_arrayStatics['loadedBody']['filename'], SORT_ASC, SORT_STRING, $this->_arrayStatics['loadedBody']['path'], SORT_ASC, SORT_STRING, $this->_arrayStatics['loadedBody']['templateName'], SORT_ASC, SORT_STRING); for($i=0;$i<count($this->_arrayStatics['loadedBody']['filename']);$i++) { $this->_cacheXML->startTag("xsl"); ($this->_generic->getSide() == "sls") ? $this->_xmlToolBox->startTag("xsl") : ""; ($this->_generic->getSide() == "sls") ? $this->_xmlToolBox->addFullTag("file", $this->_arrayStatics['loadedBody']['path'][$i], true) : ""; $this->_cacheXML->addFullTag("file", $this->_arrayStatics['loadedBody']['path'][$i], true); ($this->_generic->getSide() == "sls") ? $this->_xmlToolBox->addFullTag("templateName", $this->_arrayStatics['loadedBody']['templateName'][$i], true) : ""; $this->_cacheXML->addFullTag("templateName", $this->_arrayStatics['loadedBody']['templateName'][$i], true); ($this->_generic->getSide() == "sls") ? $this->_xmlToolBox->endTag("xsl") : ""; $this->_cacheXML->endTag("xsl"); } unset($this->_arrayStatics['loadedBody']); $this->_cacheXML->endTag("SlsBody"); ($this->_generic->getSide() == "sls") ? $this->_xmlToolBox->endTag("Body") : "";*/ // Put in cache.xml the Core loaded Body Files && in current XML $this->_xmlToolBox->startTag("CoreBody"); $this->_cacheXML->startTag("CoreBody"); $this->_arrayStatics['loadedBody']['templateName'] = array(); $this->_arrayStatics['loadedBody']['path'] = array(); $this->_arrayStatics['loadedBody']['filename'] = array(); $this->recursiveRead($dirCoreStaticsLoadedBody, true, $this->_arrayStatics['loadedBody']['templateName'], $this->_arrayStatics['loadedBody']['path'], $this->_arrayStatics['loadedBody']['filename']); array_multisort($this->_arrayStatics['loadedBody']['filename'], SORT_ASC, SORT_STRING, $this->_arrayStatics['loadedBody']['path'], SORT_ASC, SORT_STRING, $this->_arrayStatics['loadedBody']['templateName'], SORT_ASC, SORT_STRING); for($i=0;$i<count($this->_arrayStatics['loadedBody']['filename']);$i++) { $this->_cacheXML->startTag("xsl"); $this->_xmlToolBox->startTag("xsl"); $this->_xmlToolBox->addFullTag("file", $this->_arrayStatics['loadedBody']['path'][$i], true); $this->_cacheXML->addFullTag("file", $this->_arrayStatics['loadedBody']['path'][$i], true); $this->_xmlToolBox->addFullTag("templateName", $this->_arrayStatics['loadedBody']['templateName'][$i], true); $this->_cacheXML->addFullTag("templateName", $this->_arrayStatics['loadedBody']['templateName'][$i], true); $this->_xmlToolBox->endTag("xsl"); $this->_cacheXML->endTag("xsl"); } unset($this->_arrayStatics['loadedBody']); $this->_cacheXML->endTag("CoreBody"); $this->_xmlToolBox->endTag("CoreBody"); // Put in cache.xml the User loaded Headers Files but in current XML only if side == user /*($this->_generic->getSide() == "user") ? $this->_xmlToolBox->startTag("Headers") : ""; $this->_cacheXML->startTag("Headers"); $this->_arrayStatics['loadedHeaders']['templateName'] = array(); $this->_arrayStatics['loadedHeaders']['path'] = array(); $this->_arrayStatics['loadedHeaders']['filename'] = array(); $this->recursiveRead($dirStaticsLoadedHeaders, true, $this->_arrayStatics['loadedHeaders']['templateName'], $this->_arrayStatics['loadedHeaders']['path'], $this->_arrayStatics['loadedHeaders']['filename']); array_multisort($this->_arrayStatics['loadedHeaders']['filename'], SORT_ASC, SORT_STRING, $this->_arrayStatics['loadedHeaders']['path'], SORT_ASC, SORT_STRING, $this->_arrayStatics['loadedHeaders']['templateName'], SORT_ASC, SORT_STRING); for($i=0;$i<count($this->_arrayStatics['loadedHeaders']['filename']);$i++) { $this->_cacheXML->startTag("xsl"); ($this->_generic->getSide() == "user") ? $this->_xmlToolBox->startTag("xsl") : ""; ($this->_generic->getSide() == "user") ? $this->_xmlToolBox->addFullTag("file", $this->_arrayStatics['loadedHeaders']['path'][$i], true) : ""; $this->_cacheXML->addFullTag("file", $this->_arrayStatics['loadedHeaders']['path'][$i], true); ($this->_generic->getSide() == "user") ? $this->_xmlToolBox->addFullTag("templateName", $this->_arrayStatics['loadedHeaders']['templateName'][$i], true) : ""; $this->_cacheXML->addFullTag("templateName", $this->_arrayStatics['loadedHeaders']['templateName'][$i], true); ($this->_generic->getSide() == "user") ? $this->_xmlToolBox->endTag("xsl") : ""; $this->_cacheXML->endTag("xsl"); } unset($this->_arrayStatics['loadedHeaders']); $this->_cacheXML->endTag("Headers"); ($this->_generic->getSide() == "user") ? $this->_xmlToolBox->endTag("Headers") : ""; // Put in cache.xml the Sls loaded Headers Files but in current XML only if side == sls /*($this->_generic->getSide() == "sls") ? $this->_xmlToolBox->startTag("Headers") : ""; $this->_cacheXML->startTag("SlsHeaders"); $this->_arrayStatics['loadedHeaders']['templateName'] = array(); $this->_arrayStatics['loadedHeaders']['path'] = array(); $this->_arrayStatics['loadedHeaders']['filename'] = array(); $this->recursiveRead($dirStaticsLoadedHeaders, true, $this->_arrayStatics['loadedHeaders']['templateName'], $this->_arrayStatics['loadedHeaders']['path'], $this->_arrayStatics['loadedHeaders']['filename']); array_multisort($this->_arrayStatics['loadedHeaders']['filename'], SORT_ASC, SORT_STRING, $this->_arrayStatics['loadedHeaders']['path'], SORT_ASC, SORT_STRING, $this->_arrayStatics['loadedHeaders']['templateName'], SORT_ASC, SORT_STRING); for($i=0;$i<count($this->_arrayStatics['loadedHeaders']['filename']);$i++) { $this->_cacheXML->startTag("xsl"); ($this->_generic->getSide() == "sls") ? $this->_xmlToolBox->startTag("xsl") : ""; ($this->_generic->getSide() == "sls") ? $this->_xmlToolBox->addFullTag("file", $this->_arrayStatics['loadedHeaders']['path'][$i], true) : ""; $this->_cacheXML->addFullTag("file", $this->_arrayStatics['loadedHeaders']['path'][$i], true); ($this->_generic->getSide() == "sls") ? $this->_xmlToolBox->addFullTag("templateName", $this->_arrayStatics['loadedHeaders']['templateName'][$i], true) : ""; $this->_cacheXML->addFullTag("templateName", $this->_arrayStatics['loadedHeaders']['templateName'][$i], true); ($this->_generic->getSide() == "sls") ? $this->_xmlToolBox->endTag("xsl") : ""; $this->_cacheXML->endTag("xsl"); } unset($this->_arrayStatics['loadedHeaders']); $this->_cacheXML->endTag("SlsHeaders"); ($this->_generic->getSide() == "sls") ? $this->_xmlToolBox->endTag("Headers") : "";*/ // Put in cache.xml the Core loaded Headers Files && in current XML $this->_xmlToolBox->startTag("CoreHeaders"); $this->_cacheXML->startTag("CoreHeaders"); $this->_arrayStatics['loadedHeaders']['templateName'] = array(); $this->_arrayStatics['loadedHeaders']['path'] = array(); $this->_arrayStatics['loadedHeaders']['filename'] = array(); $this->recursiveRead($dirCoreStaticsLoadedHeaders, true, $this->_arrayStatics['loadedHeaders']['templateName'], $this->_arrayStatics['loadedHeaders']['path'], $this->_arrayStatics['loadedHeaders']['filename']); array_multisort($this->_arrayStatics['loadedHeaders']['filename'], SORT_ASC, SORT_STRING, $this->_arrayStatics['loadedHeaders']['path'], SORT_ASC, SORT_STRING, $this->_arrayStatics['loadedHeaders']['templateName'], SORT_ASC, SORT_STRING); for($i=0;$i<count($this->_arrayStatics['loadedHeaders']['filename']);$i++) { $this->_cacheXML->startTag("xsl"); $this->_xmlToolBox->startTag("xsl"); $this->_xmlToolBox->addFullTag("file", $this->_arrayStatics['loadedHeaders']['path'][$i], true); $this->_cacheXML->addFullTag("file", $this->_arrayStatics['loadedHeaders']['path'][$i], true); $this->_xmlToolBox->addFullTag("templateName", $this->_arrayStatics['loadedHeaders']['templateName'][$i], true); $this->_cacheXML->addFullTag("templateName", $this->_arrayStatics['loadedHeaders']['templateName'][$i], true); $this->_xmlToolBox->endTag("xsl"); $this->_cacheXML->endTag("xsl"); } unset($this->_arrayStatics['loadedHeaders']); $this->_cacheXML->endTag("CoreHeaders"); $this->_xmlToolBox->endTag("CoreHeaders"); $this->_cacheXML->endTag("Loaded"); $this->_xmlToolBox->endTag("Loaded"); $this->_cacheXML->endTag("files"); $this->_xmlToolBox->endTag("files"); $this->_cacheXML->endTag("xsls"); $writeXML = new SLS_XMLToolbox($xslHandle); $writeXML->overwriteTags("//statics", $this->_cacheXML->getXML()); $writeXML->saveXML($this->_generic->getPathConfig("configSecure")."cache.xml"); } else $this->_xmlToolBox->addValue(SLS_String::substrAfterFirstDelimiter(SLS_String::substrBeforeLastDelimiter($xslHandle, "</xsls>"), "<xsls>")); $this->_xmlToolBox->endTag("XslStatics"); }
public function action() { $user = $this->hasAuthorative(); // Objects $xmlFk = new SLS_XMLToolbox(file_get_contents($this->_generic->getPathConfig("configSls")."/fks.xml")); $xmlBearer = new SLS_XMLToolbox(file_get_contents($this->_generic->getPathConfig("configSls")."/bearers.xml")); $xml = $this->getXML(); $tables = array(); $xml = $this->makeMenu($xml); // Get the table & class name $table = SLS_String::substrAfterFirstDelimiter($this->_http->getParam("name"),"_"); $db = SLS_String::substrBeforeFirstDelimiter($this->_http->getParam("name"),"_"); $class = ucfirst($db)."_".SLS_String::tableToClass($table); $result = array_shift($xmlBearer->getTagsAttributes("//sls_configs/entry[@tableBearer='".$class."']",array("table1"))); $res = $xmlFk->getTagsAttributes("//sls_configs/entry[@tableFk='".strtolower($class)."']",array("tablePk","columnFk")); if (!empty($result) || count($res) != "2") $this->_generic->forward("SLS_Bo","EditModel",array(array("key"=>"name","value"=>$this->_http->getParam("name")))); else { $xml->startTag("fks"); for($i=0 ; $i<$count=count($res) ; $i++) { $className = ucfirst($res[$i]["attributes"][0]["value"]); $this->_generic->useModel(SLS_String::substrAfterFirstDelimiter($className,"_"),SLS_String::substrBeforeFirstDelimiter($className,"_"),"user"); $object = new $className(); array_push($tables,$className); $xml->startTag("fk"); $xml->addFullTag("class",$className,"true"); $xml->addFullTag("table",$object->getTable(),"true"); $xml->endTag("fk"); } $xml->endTag("fks"); } $xml->startTag("model"); $xml->addFullTag("table",$table,true); $xml->addFullTag("class",$class,true); $xml->endTag("model"); if ($this->_http->getParam("reload") == "true") { $target_table = SLS_String::trimSlashesFromString($this->_http->getParam("target_table")); $tableBearer = $class; $table2 = ""; foreach($tables as $table) if ($table != $target_table) $table2 = $table; $xmlNode = '<entry tableBearer="'.$tableBearer.'" table1="'.$target_table.'" table2="'.$table2.'" />'; $xmlBearer->appendXMLNode("//sls_configs",$xmlNode); $xmlBearer->saveXML($this->_generic->getPathConfig("configSls")."/bearers.xml",$xmlBearer->getXML()); $this->_generic->forward("SLS_Bo","EditModel",array(array("key"=>"name","value"=>$this->_http->getParam("name")))); } $this->saveXML($xml); }
public function action() { $xml = $this->getXML(); $xml = $this->makeMenu($xml); $user = $this->hasAuthorative(); // Objects $sql = SLS_Sql::getInstance(); $xmlBo = new SLS_XMLToolbox(file_get_contents($this->_generic->getPathConfig("configSls")."/bo.xml")); $xmlFk = new SLS_XMLToolbox(file_get_contents($this->_generic->getPathConfig("configSls")."/fks.xml")); $xmlType = new SLS_XMLToolbox(file_get_contents($this->_generic->getPathConfig("configSls")."/types.xml")); // Get the table & class name $tableName = SLS_String::substrAfterFirstDelimiter($this->_http->getParam("name"),"_"); $db = SLS_String::substrBeforeFirstDelimiter($this->_http->getParam("name"),"_"); $className = ucfirst($db)."_".SLS_String::tableToClass($tableName); $file = ucfirst($db).".".SLS_String::tableToClass($tableName); $fileName = ucfirst($db).".".SLS_String::tableToClass($tableName).".model.php"; // If current db is not this one if ($sql->getCurrentDb() != $db) $sql->changeDb($db); // Remind old properties $this->_generic->useModel(SLS_String::tableToClass($tableName),ucfirst(strtolower($db)), "user"); $object = new $className(); $oldColumns = $object->getColumns(); // Update Model $contentM = $this->getModelSource($tableName,$db); file_put_contents($this->_generic->getPathConfig("models").$fileName,$contentM); // Check Bo $controllerBo = $this->_generic->getBo(); if (!empty($controllerBo)) { $boPath = "//sls_configs/entry[@type='table' and @name='".strtolower($className)."']"; $boExists = $xmlBo->getTag($boPath."/@type"); if (empty($boExists)) { $boPath = "//sls_configs/entry/entry[@type='table' and @name='".strtolower($className)."']"; $boExists = $xmlBo->getTag($boPath); } if (!empty($boExists)) { $columns = $sql->showColumns($tableName); $newColumns = array(); for($i=0 ; $i<$count=count($columns) ; $i++) $newColumns[] = $columns[$i]->Field; $xmlNodes = ''; foreach($newColumns as $column) { $columnExists = $xmlBo->getTag($boPath."/columns/column[@table='".strtolower($className)."' and @name='".$column."']/@name"); if (empty($columnExists)) { // Avoid pk $isPk = ($column == $object->getPrimaryKey() || $column == 'pk_lang') ? true : false; // Avoid fk $fkExist = $xmlFk->getTag("//sls_configs/entry[@tableFk='".strtolower($db."_".$tableName)."' and @columnFk='".$column."']/@tablePk"); $isFk = (!empty($fkExist)) ? true : false; // Avoid quick edit on type file $fileExist = $xmlType->getTag("//sls_configs/entry[@table='".strtolower($db."_".$tableName)."' and @column='".$column."' and (@type='file_all' or @type='file_img')]/@column"); $isFile = (!empty($fileExist)) ? true : false; $xmlNodes .= ' <column table="'.strtolower($db."_".$tableName).'" name="'.$column.'" multilanguage="'.(($object->isMultilanguage() && !$isPk) ? "true" : "false").'" displayFilter="true" displayList="'.(($isFk) ? "false" : "true").'" allowEdit="'.(($isPk || $isFk || $isFile) ? "false" : "true").'" allowHtml="false" />'."\n"; } } if (!empty($xmlNodes)) { $xmlBo->appendXMLNode($boPath."/columns",$xmlNodes); } $deprecatedColumns = array_diff($oldColumns,$newColumns); foreach($deprecatedColumns as $column) { $xmlBo->deleteTags($boPath."/columns/column[@table='".strtolower($className)."' and @name='".$column."']",1); } $xmlBo->saveXML($this->_generic->getPathConfig("configSls")."/bo.xml",$xmlBo->getXML()); $xmlBo->refresh(); } } $action_id = $this->_http->getParam("Redirect"); if ($this->_generic->actionIdExists($action_id)) { $infos = $this->_generic->translateActionId($action_id); $this->_generic->redirect($infos['controller']."/".$infos['scontroller']); } else { $controllers = $this->_generic->getTranslatedController("SLS_Bo","EditModel"); $this->_generic->redirect($controllers['controller']."/".$controllers['scontroller']."/name/".$db."_".$tableName); } }
public function action() { // Objects $xml = $this->getXML(); $user = $this->hasAuthorative(); $xml = $this->makeMenu($xml); $actions = array("read" => array(), "add" => array(), "edit" => array(), "delete" => array(), "clone" => array(), "email" => array(), "custom" => array()); $autoActions = array("BoDashBoard", "BoDeleteFile", "BoExport", "BoFkAc", "BoIsLogged", "BoLike", "BoSetting", "BoUnique", "BoUpload", "BoUploadProgress"); $_publicActions = array("BoLogin", "BoLogout", "BoForgottenPwd", "BoMenu", "BoRenewPwd", "BoSwitchLang"); $_forbiddenActions = array("BoPopulate"); $db = SLS_Sql::getInstance(); $color = "pink"; $xmlColors = new SLS_XMLToolbox(file_get_contents($this->_generic->getPathConfig("configSls")."/bo_colors.xml")); $errors = array(); if ($db->tableExists("sls_graph")) { $actions["dashboard"] = array(); $dashboardId = $this->_generic->getControllersXML()->getTag("//controllers/controller[@isBo='true']/scontrollers/scontroller[@name='BoDashBoard']/@id"); $this->_generic->useModel("Sls_graph",$this->defaultDb,"sls"); $className = ucfirst($this->defaultDb)."_Sls_graph"; $slsGraph = new $className; $slsGraphs = $slsGraph->searchModels("sls_graph",array(),array(),array(),array("sls_graph_title" => "asc")); for($i=0 ; $i<$count=count($slsGraphs) ; $i++) $actions["dashboard"][$dashboardId."_sls_graph_".$slsGraphs[$i]->sls_graph_id] = "_".$slsGraphs[$i]->sls_graph_title; } $results = $this->_generic->getControllersXML()->getTagsAttributes("//controllers/controller[@isBo='true']/scontrollers/scontroller",array("name","id")); for($i=0 ; $i<$count=count($results) ; $i++) { $name = $results[$i]["attributes"][0]["value"]; $aid = $results[$i]["attributes"][1]["value"]; switch($name) { case (SLS_String::startsWith($name,"List") && SLS_String::contains($name,"_")): $actions["read"][$aid] = $name; break; case (SLS_String::startsWith($name,"Add") && SLS_String::contains($name,"_")): $actions["add"][$aid] = $name; break; case (SLS_String::startsWith($name,"Modify") && SLS_String::contains($name,"_")): $actions["edit"][$aid] = $name; break; case (SLS_String::startsWith($name,"Delete") && SLS_String::contains($name,"_")): $actions["delete"][$aid] = $name; break; case (SLS_String::startsWith($name,"Clone") && SLS_String::contains($name,"_")): $actions["clone"][$aid] = $name; break; case (SLS_String::startsWith($name,"Email") && SLS_String::contains($name,"_")): $actions["email"][$aid] = $name; break; default: if (!in_array($name,$_publicActions) && !in_array($name,$_forbiddenActions) && !in_array($name,$autoActions)) { $id = array_shift($this->_generic->getControllersXML()->getTags("//controllers/controller[@isBo='true']/scontrollers/scontroller[@name='".$name."']/@id")); if (!empty($id)) $actions["custom"][$id] = "_".$name; } break; } } $xml->startTag("bo_groups"); foreach($actions as $action => $values) { $xml->startTag("bo_group"); $xml->addFullTag("name",$action,true); foreach($values as $aid => $name) { $model = ""; switch ($name) { case (SLS_String::startsWith($name,"List")): $model = SLS_String::substrBeforeFirstDelimiter(SLS_String::substrAfterFirstDelimiter($name,"List"),"_"); break; case (SLS_String::startsWith($name,"Add")): $model = SLS_String::substrBeforeFirstDelimiter(SLS_String::substrAfterFirstDelimiter($name,"Add"),"_"); break; case (SLS_String::startsWith($name,"Modify")): $model = SLS_String::substrBeforeFirstDelimiter(SLS_String::substrAfterFirstDelimiter($name,"Modify"),"_"); break; case (SLS_String::startsWith($name,"Delete")): $model = SLS_String::substrBeforeFirstDelimiter(SLS_String::substrAfterFirstDelimiter($name,"Delete"),"_"); break; case (SLS_String::startsWith($name,"Clone")): $model = SLS_String::substrBeforeFirstDelimiter(SLS_String::substrAfterFirstDelimiter($name,"Clone"),"_"); break; case (SLS_String::startsWith($name,"Email")): $model = SLS_String::substrBeforeFirstDelimiter(SLS_String::substrAfterFirstDelimiter($name,"Email"),"_"); break; default: $model = ""; } $xml->startTag("action"); $xml->addFullTag("name",SLS_String::substrAfterFirstDelimiter($name,"_"),true); $xml->addFullTag("model",$model,true); $xml->addFullTag("id",$aid,true); $xml->endTag("action"); } $xml->endTag("bo_group"); } $xml->endTag("bo_groups"); $complexity_pwd_min_char_nb = 8; $renew_pwd_nb = 2; $renew_pwd_unite = "month"; $renew_pwd_log_nb = 3; $complexity = array(); $privilegeChoose = false; $minChars = ""; $enabled = "true"; if ($this->_http->getParam("reload") == "true") { $login = SLS_String::trimSlashesFromString($this->_http->getParam("login")); $name = SLS_String::trimSlashesFromString($this->_http->getParam("name")); $firstname = SLS_String::trimSlashesFromString($this->_http->getParam("firstname")); $pwd = SLS_String::trimSlashesFromString($this->_http->getParam("password")); $enabled = SLS_String::trimSlashesFromString($this->_http->getParam("enabled")); $complexity_pwd_lc = SLS_String::trimSlashesFromString($this->_http->getParam("complexity_pwd_lc")); $complexity_pwd_uc = SLS_String::trimSlashesFromString($this->_http->getParam("complexity_pwd_uc")); $complexity_pwd_digit = SLS_String::trimSlashesFromString($this->_http->getParam("complexity_pwd_digit")); $complexity_pwd_special_char = SLS_String::trimSlashesFromString($this->_http->getParam("complexity_pwd_special_char")); $complexity_pwd_min_char = SLS_String::trimSlashesFromString($this->_http->getParam("complexity_pwd_min_char")); $complexity_pwd_min_char_nb = SLS_String::trimSlashesFromString($this->_http->getParam("complexity_pwd_min_char_nb")); $reset_pwd = SLS_String::trimSlashesFromString($this->_http->getParam("reset_pwd")); $renew_pwd = SLS_String::trimSlashesFromString($this->_http->getParam("renew_pwd")); $renew_pwd_nb = SLS_String::trimSlashesFromString($this->_http->getParam("renew_pwd_nb")); $renew_pwd_unite = SLS_String::trimSlashesFromString($this->_http->getParam("renew_pwd_unite")); $renew_pwd_log = SLS_String::trimSlashesFromString($this->_http->getParam("renew_pwd_log")); $renew_pwd_log_nb = SLS_String::trimSlashesFromString($this->_http->getParam("renew_pwd_log_nb")); $color = SLS_String::trimSlashesFromString($this->_http->getParam("color")); $params = $this->_http->getParams(); $pathsHandle = file_get_contents($this->_generic->getPathConfig("configSls")."/rights.xml"); $xmlRights = new SLS_XMLToolbox($pathsHandle); $result = $xmlRights->getTags("//sls_configs/entry[@login='******']"); if (!empty($result)) array_push($errors,"This account already exists, please choose another login."); if (empty($name) || empty($firstname)) array_push($errors,"You must fill name and firstname."); if (empty($login) || empty($pwd)) array_push($errors,"You must choose username and password."); foreach($params as $key => $value) { if (SLS_String::startsWith($key,"bo_action")) { $privilegeChoose = true; break; } } if (!$privilegeChoose) array_push($errors,"You must choose at least 1 privilege."); if (empty($errors)) { if ($complexity_pwd_lc == "true") array_push($complexity,"lc"); if ($complexity_pwd_uc == "true") array_push($complexity,"uc"); if ($complexity_pwd_digit == "true") array_push($complexity,"digit"); if ($complexity_pwd_special_char == "true") array_push($complexity,"special_char"); if ($complexity_pwd_min_char == "true") $minChars = $complexity_pwd_min_char_nb; $xmlNew = '<entry login="******" name="'.SLS_String::stringToUrl($name," ").'" firstname="'.SLS_String::stringToUrl($firstname," ").'" enabled="'.$enabled.'" password="******" password_old="" last_connection="" last_renew_pwd="'.date("Y-m-d").'" complexity_pwd="'.implode("|",$complexity).'" min_chars_pwd="'.$minChars.'" reset_pwd="'.(($reset_pwd=="true") ? "true" : "").'" renew_pwd="'.(($renew_pwd=="true") ? $renew_pwd_nb." ".$renew_pwd_unite : "").'" renew_pwd_nb="'.(($renew_pwd_log=="true") ? $renew_pwd_log_nb : "").'">'."\n"; // Default settings $xmlNew .= ' <settings>'."\n". ' <setting key="nav_filter"><![CDATA[default]]></setting>'."\n". ' <setting key="list_view"><![CDATA[collapse]]></setting>'."\n". ' <setting key="list_nb_by_page"><![CDATA[20]]></setting>'."\n". ' <setting key="add_callback"><![CDATA[list]]></setting>'."\n". ' <setting key="edit_callback"><![CDATA[list]]></setting>'."\n". ' <setting key="export_format"><![CDATA[excel]]></setting>'."\n". ' <setting key="export_all_column"><![CDATA[true]]></setting>'."\n". ' <setting key="export_all_table"><![CDATA[true]]></setting>'."\n". ' <setting key="export_display_legend"><![CDATA[true]]></setting>'."\n". ' <setting key="quick_edit"><![CDATA[disabled]]></setting>'."\n". ' <setting key="dashboard_ga"><![CDATA[visible]]></setting>'."\n". ' <setting key="dashboard_metric"><![CDATA[visible]]></setting>'."\n". ' <setting key="dashboard_monitoring"><![CDATA[visible]]></setting>'."\n". ' <setting key="dashboard_graph"><![CDATA[visible]]></setting>'."\n". ' <setting key="dashboard_email"><![CDATA[visible]]></setting>'."\n". ' <setting key="color"><![CDATA['.((empty($color)) ? "pink" : $color).']]></setting>'."\n". ' </settings>'."\n"; foreach($autoActions as $actionName) { $aid = $this->_generic->getControllersXML()->getTag("//controllers/controller[@isBo='true']/scontrollers/scontroller[@name='".$actionName."']/@id"); $xmlNew .= ' <action id="'.$aid.'" role="custom" entity="" />'."\n"; } foreach($params as $key => $value) { if (SLS_String::startsWith($key,"bo_action")) { $xmlNew .= ' <action id="'.$value.'" role="'.SLS_String::substrBeforeFirstDelimiter(SLS_String::substrAfterFirstDelimiter($key,"bo_action_"),"_").'" entity="'.((SLS_String::substrBeforeFirstDelimiter(SLS_String::substrAfterFirstDelimiter($key,"bo_action_"),"_") == "custom") ? "" : SLS_String::substrAfterFirstDelimiter(SLS_String::substrAfterFirstDelimiter($key,"bo_action_"),"_")).'" />'."\n"; } } $xmlNew .= ' </entry>'; $xmlRights->appendXMLNode("//sls_configs",$xmlNew); $xmlRights->saveXML($this->_generic->getPathConfig("configSls")."/rights.xml",$xmlRights->getXML()); $this->_generic->redirect("Manage/Rights"); } else { $xml->startTag("errors"); foreach($errors as $error) $xml->addFullTag("error",$error,true); $xml->endTag("errors"); } } $xml->addFullTag("complexity_pwd_lc",$complexity_pwd_lc,true); $xml->addFullTag("complexity_pwd_uc",$complexity_pwd_uc,true); $xml->addFullTag("complexity_pwd_digit",$complexity_pwd_digit,true); $xml->addFullTag("complexity_pwd_special_char",$complexity_pwd_special_char,true); $xml->addFullTag("complexity_pwd_min_char",$complexity_pwd_min_char,true); $xml->addFullTag("complexity_pwd_min_char_nb",$complexity_pwd_min_char_nb,true); $xml->addFullTag("reset_pwd",$reset_pwd,true); $xml->addFullTag("renew_pwd",$renew_pwd,true); $xml->addFullTag("renew_pwd_nb",$renew_pwd_nb,true); $xml->addFullTag("renew_pwd_unite",$renew_pwd_unite,true); $xml->addFullTag("renew_pwd_log",$renew_pwd_log,true); $xml->addFullTag("renew_pwd_log_nb",$renew_pwd_log_nb,true); $xml->addFullTag("enabled",$enabled,true); $xml->addFullTag("color",(empty($color)) ? "pink" : $color,true); $colors = $xmlColors->getTagsAttributes("//sls_configs/template",array("name","hexa")); $xml->startTag("colors"); for($i=0 ; $i<$count=count($colors) ; $i++) $xml->addFullTag("color",$colors[$i]["attributes"][0]["value"],true,array("hexa" => $colors[$i]["attributes"][1]["value"])); $xml->endTag("colors"); $xml->addFullTag("url_generate_bo",$this->_generic->getFullPath("SLS_Bo","GenerateBo"),true); $this->saveXML($xml); }
public function action() { $user = $this->hasAuthorative(); $sql = SLS_Sql::getInstance(); $xml = $this->getXML(); $xml = $this->makeMenu($xml); $errors = array(); // Get the table name $table = SLS_String::substrAfterFirstDelimiter($this->_http->getParam("name"),"_"); $db = SLS_String::substrBeforeFirstDelimiter($this->_http->getParam("name"),"_"); $class = ucfirst($db)."_".SLS_String::tableToClass($table); $file = ucfirst($db).".".SLS_String::tableToClass($table); // If current db is not this one if ($sql->getCurrentDb() != $db) $sql->changeDb($db); if ($sql->tableExists($table)) { if ($this->_http->getParam("reload") == "true") { $columnWanted = $this->_http->getParam("column"); $typeWanted = $this->_http->getParam("type"); $pathsHandle = file_get_contents($this->_generic->getPathConfig("configSls")."/fks.xml"); $xmlFk = new SLS_XMLToolbox($pathsHandle); $pathsHandle = file_get_contents($this->_generic->getPathConfig("configSls")."/types.xml"); $xmlType = new SLS_XMLToolbox($pathsHandle); $pathsHandle = file_get_contents($this->_generic->getPathConfig("configSls")."/filters.xml"); $xmlFilter = new SLS_XMLToolbox($pathsHandle); $result = $xmlType->getTags("//sls_configs/entry[@table='".$db."_".$table."' and @column='".$columnWanted."']"); // If an entry already exists in the XML, delete this record if (!empty($result)) { $xmlTmp = $xmlType->deleteTags("//sls_configs/entry[@table='".$db."_".$table."' and @column='".$columnWanted."']"); $xmlType->saveXML($this->_generic->getPathConfig("configSls")."/types.xml",$xmlTmp); $xmlType->refresh(); $pathsHandle = file_get_contents($this->_generic->getPathConfig("configSls")."/types.xml"); $xmlType = new SLS_XMLToolbox($pathsHandle); } // If file type, check possible thumbs if ($typeWanted == "file") { $typeFile = $this->_http->getParam("file"); $file_thumb = $this->_http->getParam("file_thumb"); $multilang = $this->_http->getParam("multilanguage"); $thumbs = array(); $typeWanted = $typeWanted."_".$typeFile; if ($typeFile == "img" && !empty($file_thumb)) { for($i=0 ; $i<10 ; $i++) { $width = $this->_http->getParam("width".$i); $height = $this->_http->getParam("height".$i); $suffix = $this->_http->getParam("suffix".$i); if (!empty($suffix) && (!empty($width) || !empty($height))) array_push($thumbs,array('width' => $width, 'height' => $height, 'suffix' => $suffix)); } } $rules = "*|*|*"; if ($typeFile == "img") { $settings = $this->_http->getParam("imgSettings"); $ratio = str_replace(",",".",$settings["ratio"]); $minWidth = str_replace(",",".",$settings["min-width"]); $minHeight = str_replace(",",".",$settings["min-height"]); $ratio = (!is_numeric($ratio) || (is_numeric($ratio) && $ratio <= 0)) ? "*" : round($ratio,2); $minWidth = (!is_numeric($minWidth) || (is_numeric($minWidth) && $minWidth < 0)) ? "*" : round($minWidth,0); $minHeight = (!is_numeric($minHeight) || (is_numeric($minHeight) && $minHeight < 0)) ? "*" : round($minHeight,0); $rules = $ratio."|".$minWidth."|".$minHeight; } // Save it into the XML $xmlNode = '<entry table="'.$db.'_'.$table.'" column="'.$columnWanted.'" rules="'.$rules.'" thumbs="'.str_replace('"','||#||',serialize($thumbs)).'" multilanguage="'.$multilang.'" type="'.$typeWanted.'" />'; $xmlType->appendXMLNode("//sls_configs",$xmlNode); $xmlType->saveXML($this->_generic->getPathConfig("configSls")."/types.xml",$xmlType->getXML()); } else if ($typeWanted == "ip") { $type = $this->_http->getParam("ip"); // Save it into the XML $xmlNode = '<entry table="'.$db.'_'.$table.'" column="'.$columnWanted.'" type="'.$typeWanted."_".$type.'" />'; $xmlType->appendXMLNode("//sls_configs",$xmlNode); $xmlType->saveXML($this->_generic->getPathConfig("configSls")."/types.xml",$xmlType->getXML()); } else if ($typeWanted == "complexity") { $complexity = $this->_http->getParam("complexity"); $complexityMin = $this->_http->getParam("complexity_min"); $complexity = (empty($complexity)) ? array() : $complexity; if (!empty($complexityMin) && is_numeric($complexityMin) && $complexityMin >= 0) $complexity[] = "min".$complexityMin; $complexity = implode("|",$complexity); // Save it into the XML $xmlNode = '<entry table="'.$db.'_'.$table.'" column="'.$columnWanted.'" rules="'.$complexity.'" type="complexity" />'; $xmlType->appendXMLNode("//sls_configs",$xmlNode); $xmlType->saveXML($this->_generic->getPathConfig("configSls")."/types.xml",$xmlType->getXML()); } else if ($typeWanted == "num") { $type = $this->_http->getParam("num"); // Save it into the XML $xmlNode = '<entry table="'.$db.'_'.$table.'" column="'.$columnWanted.'" type="'.$typeWanted."_".$type.'" />'; $xmlType->appendXMLNode("//sls_configs",$xmlNode); $xmlType->saveXML($this->_generic->getPathConfig("configSls")."/types.xml",$xmlType->getXML()); } // Else, it's email, url, color, uniqid, position, address else { // Save it into the XML $xmlNode = '<entry table="'.$db.'_'.$table.'" column="'.$columnWanted.'" type="'.$typeWanted.'" />'; $xmlType->appendXMLNode("//sls_configs",$xmlNode); $xmlType->saveXML($this->_generic->getPathConfig("configSls")."/types.xml",$xmlType->getXML()); } // Disable UserBo quick-edit feature on this column if ($typeWanted == "file") { $xmlBo = new SLS_XMLToolbox(file_get_contents($this->_generic->getPathConfig("configSls")."/bo.xml")); $boPath = "//sls_configs/entry[@type='table' and @name='".strtolower($db."_".$table)."']/columns/column[@name='".$columnWanted."']"; $boExists = $xmlBo->getTag($boPath."/@allowEdit"); if (empty($boExists)) $boPath = "//sls_configs/entry/entry[@type='table' and @name='".strtolower($db."_".$table)."']/columns/column[@name='".$columnWanted."']"; $boExists = $xmlBo->getTag($boPath."/@allowEdit"); if (!empty($boExists)) { $xmlBo->setTagAttributes($boPath,array("allowEdit" => "false")); $xmlBo->saveXML($this->_generic->getPathConfig("configSls")."/bo.xml",$xmlBo->getXML()); $xmlBo->refresh(); } } // Update model $this->_generic->goDirectTo("SLS_Bo","UpdateModel",array(array("key"=>"name","value"=>$this->_http->getParam("name")))); } // Get generic object $this->_generic->useModel($table,$db,"user"); $object = new $class(); // Get object's infos $pathsHandle = file_get_contents($this->_generic->getPathConfig("configSls")."/fks.xml"); $xmlFk = new SLS_XMLToolbox($pathsHandle); $columnsP = $object->getParams(); $pk = $object->getPrimaryKey(); $multilanguage = $object->isMultilanguage(); $xml->startTag("model"); $xml->addFullTag("table",$table,true); $xml->addFullTag("db",$db,true); $xml->addFullTag("class",$class,true); $xml->addFullTag("pk",$pk,true); $xml->addFullTag("multilanguage",($multilanguage) ? "true" : "false",true); $xml->startTag("columns"); foreach($columnsP as $column => $value) { $res = $xmlFk->getTags("//sls_configs/entry[@tableFk='".$db."_".$table."' and @columnFk='".$column."']/@tablePk"); if ($object->getPrimaryKey() != $column && $column != "pk_lang" && empty($res)) $xml->addFullTag("column",$column,true); } $xml->endTag("columns"); $xml->endTag("model"); $plugin = new SLS_XMLToolbox(file_get_contents($this->_generic->getPathConfig("configPlugins")."/plugins.xml")); $pluginImg = array_shift($plugin->getTags("//plugins/plugin[@code='image']")); $xml->addFullTag("plugin_img",empty($pluginImg) ? 'false' : 'true',true); $xml->addFullTag("plugin_url",$this->_generic->getFullPath("SLS_Bo","Plugins"),true); } else { $xml->addFullTag("error","Sorry this table doesn't exist anymore",true); } $this->saveXML($xml); }
public function action() { set_time_limit(0); $user = $this->hasAuthorative(); $errors = array(); $sql = SLS_Sql::getInstance(); $xml = $this->getXML(); $xml = $this->makeMenu($xml); // Get all models $models = array(); $handle = opendir($this->_generic->getPathConfig("models")); while (false !== ($file = readdir($handle))) { if (!is_dir($this->_generic->getPathConfig("models")."/".$file) && substr($file, 0, 1) != ".") { $modelExploded = explode(".",$file); array_push($models,strtolower($modelExploded[0]).".".$modelExploded[1]); } } // If reload if ($this->_http->getParam("reload")=="true") { // Get the tables dude wants to generate $tablesG = ($this->_http->getParam("tables")=="") ? array() : $this->_http->getParam("tables"); // Foreach tables, generate model foreach($tablesG as $tableG) { $db = Sls_String::substrBeforeFirstDelimiter($tableG,"."); $table = Sls_String::substrAfterFirstDelimiter($tableG,"."); // Change db if it's required if ($sql->getCurrentDb() != $db) $sql->changeDb($db); // If table exists if ($sql->tableExists($table)) { $columns = $sql->showColumns($table); $tableName = $table; $currentTable = array("table"=>$db.".".$tableName,"errors"=>array()); $fieldsOk = true; $className = ucfirst($db)."_".SLS_String::tableToClass($tableName); $fileName = ucfirst($db).".".SLS_String::tableToClass($table).".model.php"; for($i=0 ; $i<$count=count($columns) ; $i++) { // Check forbidden chars if (SLS_String::removePhpChars($columns[$i]->Field) != $columns[$i]->Field) { $error = array("column"=>$columns[$i]->Field,"column_clean"=>SLS_String::removePhpChars($columns[$i]->Field)); array_push($currentTable["errors"],$error); $fieldsOk = false; } } // If all ok with special chars for the current model if ($fieldsOk) { // Check real fks $create = array_shift($sql->select("SHOW CREATE TABLE `".$table."`")); $queries = array_map("trim",explode("\n",$create->{Create." ".Table})); foreach($queries as $query) { if (SLS_String::startsWith($query,"CONSTRAINT")) { $tableFk = strtolower($db."_".$tableName); $columnFk = SLS_String::substrBeforeFirstDelimiter(SLS_String::substrAfterFirstDelimiter($query,"FOREIGN KEY (`"),"`)"); $tablePk = $db."_".SLS_String::tableToClass(SLS_String::substrBeforeFirstDelimiter(SLS_String::substrAfterFirstDelimiter($query,"REFERENCES `"),"`")); $onDelete = strtolower(SLS_String::stringToUrl(trim(SLS_String::substrBeforeFirstDelimiter(SLS_String::substrAfterFirstDelimiter($query,"ON DELETE"),"ON UPDATE")),"_")); $labelPk = ""; $columns = $sql->showColumns(SLS_String::substrBeforeFirstDelimiter(SLS_String::substrAfterFirstDelimiter($query,"REFERENCES `"),"`")); for($i=0 ; $i<$count=count($columns) ; $i++) { if ($columns[$i]->Key != "PRI" && $columns[$i]->Field != "pk_lang" && SLS_String::contains($columns[$i]->Type,"char")) { $labelPk = $columns[$i]->Field; break; } } if (empty($labelPk)) $labelPk = SLS_String::substrBeforeFirstDelimiter(SLS_String::substrAfterFirstDelimiter($query,"REFERENCES `".SLS_String::substrBeforeFirstDelimiter(SLS_String::substrAfterFirstDelimiter($query,"REFERENCES `"),"`")."` (`"),"`)"); $xmlNode = '<entry tableFk="'.$tableFk.'" columnFk="'.$columnFk.'" multilanguage="false" ondelete="'.$onDelete.'" labelPk="'.$labelPk.'" tablePk="'.$tablePk.'" />'; $xmlFk = new SLS_XMLToolbox(file_get_contents($this->_generic->getPathConfig("configSls")."/fks.xml")); $result = $xmlFk->getTags("//sls_configs/entry[@tableFk='".$tableFk."' and @columnFk='".$columnFk."' and @tablePk='".$tablePk."']"); if (!empty($result)) { $xmlTmp = $xmlFk->deleteTags("//sls_configs/entry[@tableFk='".$tableFk."' and @columnFk='".$columnFk."' and @tablePk='".$tablePk."']"); $xmlFk->saveXML($this->_generic->getPathConfig("configSls")."/fks.xml",$xmlTmp); $xmlFk = new SLS_XMLToolbox(file_get_contents($this->_generic->getPathConfig("configSls")."/fks.xml")); } $xmlFk->appendXMLNode("//sls_configs",$xmlNode); $xmlFk->saveXML($this->_generic->getPathConfig("configSls")."/fks.xml",$xmlFk->getXML()); } } // Generate Model $contentM = $this->getModelSource($tableName,$db); $status = touch($this->_generic->getPathConfig("models")."/".$fileName); if ($status) file_put_contents($this->_generic->getPathConfig("models").$fileName,$contentM); // Create SQL $fileNameS = ucfirst($db).".".SLS_String::tableToClass($table).".sql.php"; $contentS = '<?php'."\n". '/**'."\n". '* Object '.$className.'Sql'."\n". '* @author SillySmart'."\n". '* @copyright SillySmart'."\n". '* @package Mvc.Models.Objects'."\n". '* @see Sls.Models.Core.SLS_FrontModel'."\n". '* @since 1.0'."\n". '*/'."\n". 'class '.$className.'Sql extends SLS_FrontModelSql'."\n". '{'."\n". ''."\n". '}'."\n". '?>'; if ($status) $status2 = touch($this->_generic->getPathConfig("modelsSql")."/".$fileNameS); if ($status2) file_put_contents($this->_generic->getPathConfig("modelsSql")."/".$fileNameS,$contentS); } else array_push($errors,$currentTable); } } // If no errors if (empty($errors)) { $controllers = $this->_generic->getTranslatedController("SLS_Bo","Models"); $this->_generic->redirect($controllers['controller']."/".$controllers['scontroller']); } else { // Get all models $models = array(); $handle = opendir($this->_generic->getPathConfig("models")); while (false !== ($file = readdir($handle))) if (!is_dir($this->_generic->getPathConfig("models")."/".$file) && substr($file, 0, 1) != ".") { $modelExploded = explode(".",$file); array_push($models,strtolower($modelExploded[0]).".".$modelExploded[1]); } // Form errors $xml->startTag("errors"); for($i=0 ; $i<$count=count($errors) ; $i++) { $xml->startTag("error"); $xml->addFullTag("table",SLS_String::substrAfterFirstDelimiter($errors[$i]["table"],"."),true); $xml->addFullTag("db",SLS_String::substrBeforeFirstDelimiter($errors[$i]["table"],"."),true); $xml->startTag("columns"); for($j=0 ; $j<$count2=count($errors[$i]["errors"]) ; $j++) { $xml->startTag("column"); $xml->addFullTag("old",$errors[$i]["errors"][$j]["column"],true); $xml->addFullTag("new",$errors[$i]["errors"][$j]["column_clean"],true); $xml->endTag("column"); } $xml->endTag("columns"); $xml->endTag("error"); } $xml->endTag("errors"); } } // Foreach db $dbs = $sql->getDbs(); $allDbs = array(); foreach($dbs as $db) { $allDbs[$db] = array(); // Change db $sql->changeDb($db); // Get all tables $tables = $sql->showTables(); for($i=0 ; $i<$count=count($tables) ; $i++) { $allDbs[$db][$tables[$i]->Name] = array("name" => $tables[$i]->Name, "existed" => (in_array($db.".".SLS_String::tableToClass($tables[$i]->Name),$models)) ? 'true' : 'false'); } } asort($allDbs,SORT_REGULAR); uksort($allDbs,array($this, 'unshiftDefaultDb')); $xml->startTag("dbs"); foreach($allDbs as $key => $db) { asort($db,SORT_REGULAR); $xml->startTag("db"); $xml->addFullTag("name",$key,true); $xml->startTag("tables"); foreach($db as $tableCur) { if (!SLS_String::startsWith(strtolower($tableCur["name"]),"sls_graph")) { $xml->startTag("table"); $xml->addFullTag("name",$tableCur["name"]); $xml->addFullTag("existed",$tableCur["existed"]); $xml->endTag("table"); } } $xml->endTag("tables"); $xml->endTag("db"); } $xml->endTag("dbs"); $this->saveXML($xml); }
/** * Save the cache file if the cache is enabled * * @access public * @param string $xml the xml to save * @since 1.0 */ public function saveCacheXML($xml) { $cacheObjects = file_get_contents($this->_root.$this->_configSecurePath."/cache.xml"); $writeXML = new SLS_XMLToolbox($cacheObjects); $writeXML->overwriteTags("//statics", $xml); try { $xml = simplexml_load_string($writeXML->getXML()); $writeXML->saveXML($this->_root.$this->_configSecurePath."/cache.xml"); } catch (Exception $e) {} }
public function action() { $user = $this->hasAuthorative(); $sql = SLS_Sql::getInstance(); $xml = $this->getXML(); $xml = $this->makeMenu($xml); $errors = array(); $pathsHandle = file_get_contents($this->_generic->getPathConfig("configSls")."/fks.xml"); $xmlFk = new SLS_XMLToolbox($pathsHandle); $pathsHandle = file_get_contents($this->_generic->getPathConfig("configSls")."/types.xml"); $xmlType = new SLS_XMLToolbox($pathsHandle); $pathsHandle = file_get_contents($this->_generic->getPathConfig("configSls")."/filters.xml"); $xmlFilter = new SLS_XMLToolbox($pathsHandle); // Get the table name $table = SLS_String::substrAfterFirstDelimiter($this->_http->getParam("name"),"_"); $db = SLS_String::substrBeforeFirstDelimiter($this->_http->getParam("name"),"_"); $column= $this->_http->getParam("column"); $class = ucfirst($db)."_".SLS_String::tableToClass($table); $file = ucfirst($db).".".SLS_String::tableToClass($table); // If current db is not this one if ($sql->getCurrentDb() != $db) $sql->changeDb($db); if ($sql->tableExists($table)) { if ($this->_http->getParam("reload") == "true") { $columnWanted = $this->_http->getParam("column"); $typeWanted = $this->_http->getParam("type"); $result = $xmlType->getTags("//sls_configs/entry[@table='".$db."_".$table."' and @column='".$columnWanted."']"); // If an entry already exists in the XML, delete this record if (!empty($result)) { $xmlTmp = $xmlType->deleteTags("//sls_configs/entry[@table='".$db."_".$table."' and @column='".$columnWanted."']"); $xmlType->saveXML($this->_generic->getPathConfig("configSls")."/types.xml",$xmlTmp); $pathsHandle = file_get_contents($this->_generic->getPathConfig("configSls")."/types.xml"); $xmlType = new SLS_XMLToolbox($pathsHandle); } // If file type, check possible thumbs if ($typeWanted == "file") { $typeFile = $this->_http->getParam("file"); $file_thumb = $this->_http->getParam("file_thumb"); $multilang = $this->_http->getParam("multilanguage"); $thumbs = array(); $typeWanted = $typeWanted."_".$typeFile; if ($typeFile == "img" && !empty($file_thumb)) { for($i=0 ; $i<10 ; $i++) { $width = $this->_http->getParam("width".$i); $height = $this->_http->getParam("height".$i); $suffix = $this->_http->getParam("suffix".$i); if (!empty($suffix) && (!empty($width) || !empty($height))) array_push($thumbs,array('width' => $width, 'height' => $height, 'suffix' => $suffix)); } } $rules = "*|*|*"; if ($typeFile == "img") { $settings = $this->_http->getParam("imgSettings"); $ratio = str_replace(",",".",$settings["ratio"]); $minWidth = str_replace(",",".",$settings["min-width"]); $minHeight = str_replace(",",".",$settings["min-height"]); $ratio = (!is_numeric($ratio) || (is_numeric($ratio) && $ratio <= 0)) ? "*" : round($ratio,2); $minWidth = (!is_numeric($minWidth) || (is_numeric($minWidth) && $minWidth < 0)) ? "*" : round($minWidth,0); $minHeight = (!is_numeric($minHeight) || (is_numeric($minHeight) && $minHeight < 0)) ? "*" : round($minHeight,0); $rules = $ratio."|".$minWidth."|".$minHeight; } // Save it into the XML $xmlNode = '<entry table="'.$db.'_'.$table.'" column="'.$columnWanted.'" rules="'.$rules.'" thumbs="'.str_replace('"','||#||',serialize($thumbs)).'" multilanguage="'.$multilang.'" type="'.$typeWanted.'" />'; $xmlType->appendXMLNode("//sls_configs",$xmlNode); $xmlType->saveXML($this->_generic->getPathConfig("configSls")."/types.xml",$xmlType->getXML()); } else if ($typeWanted == "ip") { $type = $this->_http->getParam("ip"); // Save it into the XML $xmlNode = '<entry table="'.$db.'_'.$table.'" column="'.$columnWanted.'" type="'.$typeWanted."_".$type.'" />'; $xmlType->appendXMLNode("//sls_configs",$xmlNode); $xmlType->saveXML($this->_generic->getPathConfig("configSls")."/types.xml",$xmlType->getXML()); } else if ($typeWanted == "complexity") { $complexity = $this->_http->getParam("complexity"); $complexityMin = $this->_http->getParam("complexity_min"); $complexity = (empty($complexity)) ? array() : $complexity; if (!empty($complexityMin) && is_numeric($complexityMin) && $complexityMin >= 0) $complexity[] = "min".$complexityMin; $complexity = implode("|",$complexity); // Save it into the XML $xmlNode = '<entry table="'.$db.'_'.$table.'" column="'.$columnWanted.'" rules="'.$complexity.'" type="complexity" />'; $xmlType->appendXMLNode("//sls_configs",$xmlNode); $xmlType->saveXML($this->_generic->getPathConfig("configSls")."/types.xml",$xmlType->getXML()); } else if ($typeWanted == "num") { $type = $this->_http->getParam("num"); // Save it into the XML $xmlNode = '<entry table="'.$db.'_'.$table.'" column="'.$columnWanted.'" type="'.$typeWanted."_".$type.'" />'; $xmlType->appendXMLNode("//sls_configs",$xmlNode); $xmlType->saveXML($this->_generic->getPathConfig("configSls")."/types.xml",$xmlType->getXML()); } // Else, it's email, url else { // Save it into the XML $xmlNode = '<entry table="'.$db.'_'.$table.'" column="'.$columnWanted.'" type="'.$typeWanted.'" />'; $xmlType->appendXMLNode("//sls_configs",$xmlNode); $xmlType->saveXML($this->_generic->getPathConfig("configSls")."/types.xml",$xmlType->getXML()); } // Update Model $fileName = ucfirst($db).".".SLS_String::tableToClass($table).".model.php"; $contentM = $this->getModelSource($table,$db); file_put_contents($this->_generic->getPathConfig("models").$fileName,$contentM); $controllers = $this->_generic->getTranslatedController("SLS_Bo","EditModel"); $this->_generic->redirect($controllers['controller']."/".$controllers['scontroller']."/name/".$db."_".$table); } // Get generic object $this->_generic->useModel($table,$db,"user"); $object = new $class(); // Get current entry $attributes = array_shift($xmlType->getTagsAttributes("//sls_configs/entry[@table='".$db."_".$table."' and @column='".$column."']",array("type","thumbs","multilanguage","hash","rules"))); // Get object's infos $columnsP = $object->getParams(); $pk = $object->getPrimaryKey(); $multilanguage = $object->isMultilanguage(); $xml->startTag("model"); $xml->addFullTag("table",$table,true); $xml->addFullTag("db",$db,true); $xml->addFullTag("class",$class,true); $xml->addFullTag("pk",$pk,true); $xml->addFullTag("multilanguage",($multilanguage) ? "true" : "false",true); $xml->addFullTag("column",$column,true); $xml->addFullTag("type",$attributes["attributes"][0]["value"],true); $xml->startTag("thumbs"); $thumbs = unserialize(str_replace("||#||",'"',$attributes["attributes"][1]["value"])); if (!empty($thumbs)) { for($i=0 ; $i<$count=count($thumbs) ; $i++) { $xml->startTag("thumb"); $xml->addFullTag("width",$thumbs[$i]["width"],true); $xml->addFullTag("height",$thumbs[$i]["height"],true); $xml->addFullTag("suffix",$thumbs[$i]["suffix"],true); $xml->endTag("thumb"); } } $xml->endTag("thumbs"); $xml->addFullTag("multilanguage",($attributes["attributes"][2]["value"] == "true") ? "true" : "false",true); $xml->addFullTag("hash",$attributes["attributes"][3]["value"],true); $xml->addFullTag("rules",$attributes["attributes"][4]["value"],true); $xml->endTag("model"); $plugin = new SLS_XMLToolbox(file_get_contents($this->_generic->getPathConfig("configPlugins")."/plugins.xml")); $pluginImg = array_shift($plugin->getTags("//plugins/plugin[@code='image']")); $xml->addFullTag("plugin_img",empty($pluginImg) ? 'false' : 'true',true); $xml->addFullTag("plugin_url",$this->_generic->getFullPath("SLS_Bo","Plugins"),true); } else { $xml->addFullTag("error","Sorry this table doesn't exist anymore",true); } $this->saveXML($xml); }
public function action() { $user = $this->hasAuthorative(); $xml = $this->getXML(); $xml = $this->makeMenu($xml); $langs = array(); $appli_langs = array(); $handle = new SLS_XMLToolbox(file_get_contents($this->_generic->getPathConfig("configSls")."international.xml")); $step = 0; $errors = array(); $controllerXML = $this->_generic->getControllersXML(); $metaXML = new SLS_XMLToolbox(file_get_contents($this->_generic->getPathConfig("configSls")."metas.xml")); $appli_langs = $this->_generic->getObjectLang()->getSiteLangs(); $defaultLang = $this->_generic->getObjectLang()->getDefaultLang(); // If lang have been choose if ($this->_http->getParam("step") == "1") { $lang1 = SLS_String::trimSlashesFromString($this->_http->getParam("lang")); $lang = array_shift($handle->getTags("//sls_configs/sls_country/sls_country_langs/sls_country_lang[node()='".$lang1."']/@iso")); if (!in_array($lang,$appli_langs)) { $step = 2; $xml->addFullTag("step","2",true); $xml->addFullTag("lang_to_add",$lang,true); } else { $xml->addFullTag("lang_selected",$lang1,true); $xml->startTag("errors"); $xml->addFullTag("error","This lang already exist in your application",true); $xml->endTag("errors"); } } if ($this->_http->getParam("step") == "2" || $step == 2) { $lang = (empty($lang)) ? $this->_http->getParam("lang_to_add") : $lang; $xml->addFullTag("step","2",true); $xml->addFullTag("lang_to_add",$lang,true); $generics = array( "MONDAY" => "", "TUESDAY" => "", "WEDNESDAY" => "", "THURSDAY" => "", "FRIDAY" => "", "SATURDAY" => "", "SUNDAY" => "", "JANUARY" => "", "FEBRUARY" => "", "MARCH" => "", "APRIL" => "", "MAY" => "", "JUNE" => "", "JULY" => "", "AUGUST" => "", "SEPTEMBER" => "", "OCTOBER" => "", "NOVEMBER" => "", "DECEMBER" => "", "DATE_PATTERN_TIME" => "", "DATE_PATTERN_FULL_TIME" => "", "DATE_PATTERN_DATE" => "", "DATE_PATTERN_MONTH_LITTERAL" => "", "DATE_PATTERN_FULL_LITTERAL" => "", "DATE_PATTERN_FULL_LITTERAL_TIME" => "", "DATE_PATTERN_MONTH_LITTERAL_TIME" => "", "DATE_DIFF_Y" => "", "DATE_DIFF_M" => "", "DATE_DIFF_W" => "", "DATE_DIFF_D" => "", "DATE_DIFF_H" => "", "DATE_DIFF_I" => "", "DATE_DIFF_S" => "", "E_CONTENT" => "", "E_EMPTY" => "", "E_KEY" => "", "E_COMPLEXITY" => "", "E_LENGTH" => "", "E_NULL" => "", "E_UNIQUE" => "", "E_TYPE" => "", "E_SIZE" => "", "E_EXIST" => "", "E_WRITE" => "", "E_LOGGED" => "", "E_AUTHORIZED" => "" ); // Try to recover generic langs from Deployement if (file_exists($this->_generic->getPathConfig("installDeployement")."Langs/Generics/generic.".$lang.".lang.php")) include($this->_generic->getPathConfig("installDeployement")."Langs/Generics/generic.".$lang.".lang.php"); // Set the default value by english or current lang if has been found in Deployement foreach($generics as $key => $value) $generics[$key] = SLS_String::trimSlashesFromString($GLOBALS[$GLOBALS['PROJECT_NAME']]['JS']['SLS_'.$key]); $controllers = array(); // Recover all controllers $controllersA = $controllerXML->getTags("//controllers/controller[@side='user']/@name"); foreach($controllersA as $controller) { $id = array_shift($controllerXML->getTags("//controllers/controller[@name='".$controller."']/@id")); $values = array(); foreach($appli_langs as $appli_lang) $values[$appli_lang] = array_shift($controllerXML->getTags("//controllers/controller[@name='".$controller."']/controllerLangs/controllerLang[@lang='".$appli_lang."']")); $values[$lang] = SLS_String::trimSlashesFromString($this->_http->getParam($id."_".$lang)); $result = array("id" => $id, "key" => $controller, "values" => $values, "actions" => array()); array_push($controllers,$result); } // Foreach controllers, recover all actions for($i=0 ; $i<$count=count($controllers) ; $i++) { $controller = $controllers[$i]["key"]; $actions = $controllerXML->getTags("//controllers/controller[@name='".$controller."']/scontrollers/scontroller/@name"); $actionsA = array(); foreach($actions as $action) { $id = array_shift($controllerXML->getTags("//controllers/controller[@name='".$controller."']/scontrollers/scontroller[@name='".$action."']/@id")); $values = array(); foreach($appli_langs as $appli_lang) $values[$appli_lang] = array_shift($controllerXML->getTags("//controllers/controller[@name='".$controller."']/scontrollers/scontroller[@name='".$action."']/scontrollerLangs/scontrollerLang[@lang='".$appli_lang."']")); $values[$lang] = SLS_String::trimSlashesFromString($this->_http->getParam($id."_".$lang)); $metas = array("title" => array(), "description" => array(), "keywords" => array()); $titles = array(); $descriptions = array(); $keywords = array(); foreach($appli_langs as $appli_lang) { $titles[$appli_lang] = array_shift($metaXML->getTags("//sls_configs/action[@id='".$id."']/title[@lang='".$appli_lang."']")); $descriptions[$appli_lang] = array_shift($metaXML->getTags("//sls_configs/action[@id='".$id."']/description[@lang='".$appli_lang."']")); $keywords[$appli_lang] = array_shift($metaXML->getTags("//sls_configs/action[@id='".$id."']/keywords[@lang='".$appli_lang."']")); } $titles[$lang] = SLS_String::trimSlashesFromString($this->_http->getParam("meta_title-".$id."_".$lang)); $descriptions[$lang] = SLS_String::trimSlashesFromString($this->_http->getParam("meta_description-".$id."_".$lang)); $keywords[$lang] = SLS_String::trimSlashesFromString($this->_http->getParam("meta_keywords-".$id."_".$lang)); $metas["title"] = $titles; $metas["description"] = $descriptions; $metas["keywords"] = $keywords; $result = array("id" => $id,"key" => $action, "values" => $values, "metas" => $metas); array_push($actionsA,$result); } $controllers[$i]["actions"] = $actionsA; } // If informations have been sent, check if it's good if ($this->_http->getParam("reload") == "true") { $mods = array(); $smods = array(); // Get all controllers foreach($this->_http->getParams() as $key => $value) { // Controllers case if (SLS_String::startsWith($key,"c_")) { $id = SLS_String::substrBeforeLastDelimiter($key,"_".$lang); $mod = array_shift($controllerXML->getTags("//controllers/controller[@id='".$id."']/@name")); $mods[$id] = SLS_String::stringToUrl(SLS_String::trimSlashesFromString($value),"",false); if (empty($mods[$id])) array_push($errors,"You have to fill the rewrite of the controller '".$mod."'."); $modsExisted = $controllerXML->getTags("//controllers/controller/controllerLangs/controllerLang"); if (in_array($mods[$id],$modsExisted)) array_push($errors,"The name for rewrite of the controller '".$mod."' is already used, please choose another one."); } // Actions case else if (SLS_String::startsWith($key,"a_")) { $id = SLS_String::substrBeforeLastDelimiter($key,"_".$lang); $smod = array_shift($controllerXML->getTags("//controllers/controller/scontrollers/scontroller[@id='".$id."']/@name")); $mod = array_shift($controllerXML->getTags("//controllers/controller[scontrollers/scontroller[@id='".$id."']]/@name")); $idC = array_shift($controllerXML->getTags("//controllers/controller[scontrollers/scontroller[@id='".$id."']]/@id")); $smods[$id] = SLS_String::stringToUrl(SLS_String::trimSlashesFromString($value),"",false); if (empty($smods[$id])) array_push($errors,"You have to fill the rewrite of the action '".$smod."' (controller '".$mod."')."); $smodsExisted = $controllerXML->getTags("//controllers/controller[@id='".$idC."']/scontrollers/scontroller/scontrollerLangs/scontrollerLang[@lang='".$lang."']"); if (in_array($smods[$id],$smodsExisted)) array_push($errors,"The name for rewrite of the action '".$smod."' (controller '".$mod."') is already used by another action of the same controller, please choose another one."); } // Generics case else if (SLS_String::startsWith($key,"generic_")) { $label = SLS_String::substrAfterFirstDelimiter($key,"generic_"); if (empty($value)) array_push($errors,"You have to fill the content of the variable '".$label."'"); $generics[$label] = strtolower(SLS_String::trimSlashesFromString($value)); } } // If all cool if (empty($errors)) { // controllers.xml foreach($mods as $key => $value) { $str = '<controllerLang lang="'.$lang.'"><![CDATA['.$value.']]></controllerLang>'; $controllerXML->appendXMLNode("//controllers/controller[@id='".$key."']/controllerLangs",$str); } foreach($smods as $key => $value) { $str = '<scontrollerLang lang="'.$lang.'"><![CDATA['.$value.']]></scontrollerLang>'; $controllerXML->appendXMLNode("//controllers/controller/scontrollers/scontroller[@id='".$key."']/scontrollerLangs",$str); // metas.xml $title = SLS_String::trimSlashesFromString($this->_http->getParam("meta_title-".$key."_".$lang)); if (empty($title)) $str = '<title lang="'.$lang.'"/>'; else $str = '<title lang="'.$lang.'"><![CDATA['.$title.']]></title>'; $metaXML->appendXMLNode("//sls_configs/action[@id='".$key."']",$str); $description = SLS_String::trimSlashesFromString($this->_http->getParam("meta_description-".$key."_".$lang)); if (empty($description)) $str = '<description lang="'.$lang.'"/>'; else $str = '<description lang="'.$lang.'"><![CDATA['.$description.']]></description>'; $metaXML->appendXMLNode("//sls_configs/action[@id='".$key."']",$str); $keyword = SLS_String::trimSlashesFromString($this->_http->getParam("meta_keywords-".$key."_".$lang)); if (empty($keyword)) $str = '<keywords lang="'.$lang.'"/>'; else $str = '<keywords lang="'.$lang.'"><![CDATA['.$keyword.']]></keywords>'; $metaXML->appendXMLNode("//sls_configs/action[@id='".$key."']",$str); // /metas.xml } $controllerXML->saveXML($this->_generic->getPathConfig("configSecure")."controllers.xml"); $metaXML->saveXML($this->_generic->getPathConfig("configSls")."metas.xml"); // /controllers.xml // site.xml $siteXML = $this->_generic->getSiteXML(); $str = '<name isSecure="false" js="false" active="false"><![CDATA['.$lang.']]></name>'; $siteXML->appendXMLNode("//configs/langs",$str); $siteXML->saveXML($this->_generic->getPathConfig("configSecure")."site.xml"); // /site.xml // generic.iso.lang.php $fileContent = '<?php'."\n". '/**'."\n". ' * Generic Sls Vars'."\n". ' */'."\n"; foreach($generics as $key => $value) $fileContent .= '$GLOBALS[$GLOBALS[\'PROJECT_NAME\']][\'JS\'][\'SLS_'.$key.'\'] = "'.str_replace('"','\"',$value).'";'."\n"; $fileContent .= '?>'; file_put_contents($this->_generic->getPathConfig("coreGenericLangs")."generic.".$lang.".lang.php",$fileContent); // /generic.iso.lang.php // site.iso.lang.php $fileContent = '<?php'."\n". '/**'."\n". ' * SillySmart Translations'."\n". ' * Language : '.array_shift($handle->getTags("//sls_configs/sls_country/sls_country_langs/sls_country_lang[node()='".$lang."']/@iso")).' ('.strtoupper($lang).')'."\n". ' */'."\n\n". '?>'; file_put_contents($this->_generic->getPathConfig("genericLangs")."site.".$lang.".lang.php",str_replace(array("Translations in '".strtoupper($defaultLang)."'","site.".$defaultLang.".lang.php","sentence in ".strtoupper($defaultLang)),array("Translations in '".strtoupper($lang)."'","site.".$lang.".lang.php","sentence in ".strtoupper($lang)),file_get_contents($this->_generic->getPathConfig("genericLangs")."site.".$defaultLang.".lang.php"))); // /site.iso.lang.php // Actions langs files $directories = array(); foreach($mods as $key => $value) array_push($directories,array_shift($controllerXML->getTags("//controllers/controller[@id='".$key."']/@name"))); $this->copyActionsLang($directories,$lang); // /Actions langs files // User_Bo langs $controllerBo = $controllerXML->getTag("//controllers/controller[@side='user' and @isBo='true']/@name"); if (!empty($controllerBo)) { if (file_exists($this->_generic->getPathConfig("installDeployement")."Langs/Actions/{{USER_BO}}/__{{USER_BO}}.".$lang.".lang.php")) $langContent = str_replace(array("{{USER_BO}}"),array($controllerBo),file_get_contents($this->_generic->getPathConfig("installDeployement")."Langs/Actions/{{USER_BO}}/__{{USER_BO}}.".$lang.".lang.php")); else $langContent = str_replace(array("{{USER_BO}}"),array($controllerBo),file_get_contents($this->_generic->getPathConfig("installDeployement")."Langs/Actions/{{USER_BO}}/__{{USER_BO}}.en.lang.php")); if (!empty($langContent)) file_put_contents($this->_generic->getPathConfig("actionLangs").$controllerBo."/__".$controllerBo.".".$lang.".lang.php",$langContent); } // MySQL multilanguage tables $handle = opendir($this->_generic->getPathConfig("models")); // Disable explain SLS_Sql::getInstance()->_explain = false; // Foreach models while (false !== ($file = readdir($handle))) { if (!is_dir($this->_generic->getPathConfig("models")."/".$file) && substr($file, 0, 1) != ".") { $fileExploded = explode(".",$file); if (is_array($fileExploded) && count($fileExploded) == 4) { $db = $fileExploded[0]; $class = $fileExploded[1]; $className = $db."_".$class; $this->_generic->useModel($class,$db,"user"); $object = new $className(); if ($object->isMultilanguage()) { $results = $object->searchModels($object->getTable(),array(),array(0=>array("column"=>"pk_lang","value"=>$defaultLang,"mode"=>"equal"))); for($i=0 ; $i<$count=count($results) ; $i++) { $object = new $className(); $object->setModelLanguage($lang); foreach($results[$i] as $column => $col_value) { if ($column != "pk_lang" && $column != $object->getPrimaryKey()) { $object->__set($column,$col_value); } } try { $object->create($results[$i]->{$object->getPrimaryKey()}); } catch (Exception $e){} } } } } } // /MySQL multilanguage tables // Redirect $controllers = $this->_generic->getTranslatedController("SLS_Bo","Langs"); $this->_generic->redirect($controllers["controller"]."/".$controllers["scontroller"].".sls"); } // Else, form errors else { $xml->startTag("errors"); foreach($errors as $error) $xml->addFullTag("error",$error,true); $xml->endTag("errors"); } } $xml->startTag("generic_langs"); foreach($generics as $key => $value) { $xml->startTag("generic_lang"); $xml->addFullTag("key",$key,true); $xml->addFullTag("value",$value,true); $xml->endTag("generic_lang"); } $xml->endTag("generic_langs"); $xml->startTag("controllers"); for($i=0 ; $i<$count=count($controllers) ; $i++) { $xml->startTag("controller"); $xml->addFullTag("id",$controllers[$i]["id"],true); $xml->addFullTag("key",$controllers[$i]["key"],true); $xml->startTag("values"); foreach($controllers[$i]["values"] as $key2 => $value2) { $xml->startTag("value"); $xml->addFullTag("key",$key2,true); $xml->addFullTag("value",$value2,true); $xml->endTag("value"); } $xml->endTag("values"); $xml->startTag("actions"); for($j=0 ; $j<$count2=count($controllers[$i]["actions"]) ; $j++) { $action = $controllers[$i]["actions"]; $xml->startTag("action"); $xml->addFullTag("id",$action[$j]["id"],true); $xml->addFullTag("key",$action[$j]["key"],true); $xml->startTag("values"); foreach($action[$j]["values"] as $key3 => $value3) { $xml->startTag("value"); $xml->addFullTag("key",$key3,true); $xml->addFullTag("value",$value3,true); $xml->endTag("value"); } $xml->endTag("values"); $xml->startTag("metas"); foreach($action[$j]["metas"] as $key4 => $value4) { $xml->startTag("meta"); $xml->addFullTag("key",$key4,true); $xml->startTag("values"); foreach($value4 as $key5 => $value5) { $xml->startTag("value"); $xml->addFullTag("key",$key5,true); $xml->addFullTag("value",$value5,true); $xml->endTag("value"); } $xml->endTag("values"); $xml->endTag("meta"); } $xml->endTag("metas"); $xml->endTag("action"); } $xml->endTag("actions"); $xml->endTag("controller"); } $xml->endTag("controllers"); } $xpathLangs = $handle->getTags("//sls_configs/sls_country/sls_country_langs/sls_country_lang[@iso != '']"); foreach ($xpathLangs as $lang) if (!in_array(trim($lang), $langs)) array_push($langs, trim($lang)); array_multisort($langs, SORT_STRING, SORT_ASC); $xml->startTag("langs"); foreach ($langs as $lang) $xml->addFullTag("lang", $lang, true); $xml->endTag("langs"); $this->saveXML($xml); }
/** * Construct the XML * * @access public * @since 1.0 */ public function constructXML() { $this->_cacheXML = new SLS_XMLToolbox(); $this->_cacheActive = $this->_generic->isCache(); $this->_xmlToolBox->startTag("JsStatics"); $dirStatics = $this->_generic->getPathConfig("jsStatics"); $dirGlobals = $this->_generic->getPathConfig("js"); $dirCoreStatics = $this->_generic->getPathConfig("coreJsStatics"); $jsHandle = file_get_contents($this->_generic->getPathConfig("configSecure")."cache.xml"); if (!$this->_cacheActive) { $this->_cacheXML->startTag("javascripts"); $this->_arrayStatics['js']['path'] = array(); $this->_arrayStatics['js']['filename'] = array(); $domainName = $this->_generic->getSiteConfig("domainName",($this->_generic->hasCdn()) ? $this->_generic->getCdn() : ""); $protocol = $this->_generic->getProtocol(); $this->recursiveRead($dirStatics, $this->_arrayStatics['js']['path'], $this->_arrayStatics['js']['filename']); array_multisort($this->_arrayStatics['js']['filename'], SORT_ASC, SORT_STRING, $this->_arrayStatics['js']['path'], SORT_ASC, SORT_STRING); $this->_xmlToolBox->startTag("filesStatics"); $this->_cacheXML->startTag("filesStatics"); for($i=0;$i<count($this->_arrayStatics['js']['filename']);$i++) { $this->_xmlToolBox->addFullTag("file", $protocol."://".$domainName."/".$this->_arrayStatics['js']['path'][$i], true); $this->_cacheXML->addFullTag("file", $protocol."://".$domainName."/".$this->_arrayStatics['js']['path'][$i], true); } $this->_cacheXML->endTag("filesStatics"); $this->_xmlToolBox->endTag("filesStatics"); $this->_arrayStatics['js']['path'] = array(); $this->_arrayStatics['js']['filename'] = array(); $this->recursiveRead($dirCoreStatics, $this->_arrayStatics['js']['path'], $this->_arrayStatics['js']['filename']); array_multisort($this->_arrayStatics['js']['filename'], SORT_ASC, SORT_STRING, $this->_arrayStatics['js']['path'], SORT_ASC, SORT_STRING); $this->_xmlToolBox->startTag("filesCoreStatics"); $this->_cacheXML->startTag("filesCoreStatics"); for($i=0;$i<count($this->_arrayStatics['js']['filename']);$i++) { $this->_xmlToolBox->addFullTag("file", $protocol."://".$domainName."/".$this->_arrayStatics['js']['path'][$i], true); $this->_cacheXML->addFullTag("file", $protocol."://".$domainName."/".$this->_arrayStatics['js']['path'][$i], true); } $this->_cacheXML->endTag("filesCoreStatics"); $this->_xmlToolBox->endTag("filesCoreStatics"); $this->_arrayStatics['js']['path'] = array(); $this->_arrayStatics['js']['filename'] = array(); if (substr($dirStatics, strlen($dirStatics)-1, 1) != "/") $dirStatics .= "/"; $paths[0] = $dirStatics; $this->recursiveRead($dirGlobals, $this->_arrayStatics['js']['path'], $this->_arrayStatics['js']['filename'], $paths); array_multisort($this->_arrayStatics['js']['filename'], SORT_ASC, SORT_STRING, $this->_arrayStatics['js']['path'], SORT_ASC, SORT_STRING); $this->_xmlToolBox->startTag("filesDyn"); $this->_cacheXML->startTag("filesDyn"); for($i=0;$i<count($this->_arrayStatics['js']['filename']);$i++) { $this->_xmlToolBox->addFullTag("file", $protocol."://".$domainName."/".$this->_arrayStatics['js']['path'][$i], true); $this->_cacheXML->addFullTag("file", $protocol."://".$domainName."/".$this->_arrayStatics['js']['path'][$i], true); } $this->_cacheXML->endTag("filesDyn"); $this->_xmlToolBox->endTag("filesDyn"); $this->_cacheXML->endTag("javascripts"); $writeXML = new SLS_XMLToolbox($jsHandle); $writeXML->overwriteTags("//statics", $this->_cacheXML->getXML('noHeader')); $writeXML->saveXML($this->_generic->getPathConfig("configSecure")."cache.xml"); } else { $xmlCache = new SLS_XMLToolbox($jsHandle); $files = $xmlCache->getTags("//statics/javascripts/filesCoreStatics/file"); $this->_xmlToolBox->startTag("filesCoreStatics"); foreach ($files as $file) $this->_xmlToolBox->addFullTag("file", $file, true); $this->_xmlToolBox->endTag("filesCoreStatics"); $files = $xmlCache->getTags("//statics/javascripts/filesStatics/file"); $this->_xmlToolBox->startTag("filesStatics"); foreach ($files as $file) $this->_xmlToolBox->addFullTag("file", $file, true); $this->_xmlToolBox->endTag("filesStatics"); $files = $xmlCache->getTags("//statics/javascripts/filesDyn/file"); $this->_xmlToolBox->startTag("filesDyn"); foreach ($files as $file) $this->_xmlToolBox->addFullTag("file", $file, true); $this->_xmlToolBox->endTag("filesDyn"); } $this->_xmlToolBox->endTag("JsStatics"); }
/** * Action Home * */ public function action() { $this->secureURL(); $this->_generic->registerLink('GlobalSettings', 'SLS_Init', 'GlobalSettings'); $handle = file_get_contents($this->_generic->getPathConfig("configSls").'charset.xml'); $handle2 = file_get_contents($this->_generic->getPathConfig("configSls").'timezone.xml'); $xml = $this->getXML(); $xml->addFullTag("charsets", SLS_String::substrBeforeLastDelimiter(SLS_String::substrAfterFirstDelimiter($handle, "<sls_configs>"), "</sls_configs>"), false); $xml->addFullTag("timezones", SLS_String::substrBeforeLastDelimiter(SLS_String::substrAfterFirstDelimiter($handle2, "<sls_configs>"), "</sls_configs>"), false); $errors = array(); $domain = SLS_String::trimSlashesFromString($this->_http->getParam('settings_domain')); $protocol = SLS_String::trimSlashesFromString($this->_http->getParam('settings_protocol')); $project = SLS_String::trimSlashesFromString($this->_http->getParam('settings_project')); $description = SLS_String::trimSlashesFromString($this->_http->getParam('settings_description')); $keywords = SLS_String::trimSlashesFromString($this->_http->getParam('settings_keywords')); $author = SLS_String::trimSlashesFromString($this->_http->getParam('settings_author')); $copyright = SLS_String::trimSlashesFromString($this->_http->getParam('settings_copyright')); $extension = ($this->_http->getParam('settings_extension') == "") ? "sls" : SLS_String::trimSlashesFromString($this->_http->getParam('settings_extension')); $charset = SLS_String::trimSlashesFromString($this->_http->getParam('settings_charset')); $doctype = SLS_String::trimSlashesFromString($this->_http->getParam('settings_doctype')); $bo = SLS_String::trimSlashesFromString($this->_http->getParam('settings_bo')); $timezone_area = SLS_String::trimSlashesFromString($this->_http->getParam('settings_timezone_area')); $timezone_city = SLS_String::trimSlashesFromString($this->_http->getParam('settings_timezone_area_'.$timezone_area)); $xmlTmp = new SLS_XMLToolbox($handle); $allowedCharsets = $xmlTmp->getTags("//sls_configs/charset/code"); if ($this->_http->getParam('globalSettings_reload') == "true") { if (empty($domain)) array_push($errors,"You must fill your main domain name"); if ($protocol != 'http' && $protocol != 'https') array_push($errors,"You must choose a correct Protocol"); if (empty($project)) array_push($errors,"You must fill your project name"); if (empty($description)) array_push($errors,"You must fill your project description"); if (empty($author)) $author = $project; if (empty($copyright)) $copyright = $domain; if (empty($extension)) array_push($errors,"You must fill your default extension"); if (empty($bo)) array_push($errors,"You must fill your access to your SillySmart's Back-Office"); if (!in_array($charset,$allowedCharsets)) array_push($errors,"You must choose a valid charset"); if (empty($doctype)) array_push($errors,"You must choose your default doctype"); if (empty($timezone_area) || empty($timezone_city)) array_push($errors,"You must choose your default timezone"); if (empty($errors)) { $key = substr(md5($domain).sha1($project).uniqid(microtime()),mt_rand(5,10),mt_rand(20,32)); $coreXml = $this->_generic->getSiteXML(); $coreXml->setTag('//configs/domainName', "<domain alias='__default' default='1' js='true' isSecure='false' lang=''><![CDATA[".$domain."]]></domain>", false); $coreXml->setTag('//configs/protocol',$protocol); $coreXml->setTag('//configs/defaultExtension',$extension); $coreXml->setTag('//configs/projectName',$project); $coreXml->setTag('//configs/versionName',date("Ymd")."-dev"); $coreXml->setTag('//configs/metaDescription',$description); $coreXml->setTag('//configs/metaKeywords',$keywords); $coreXml->setTag('//configs/metaAuthor',$author); $coreXml->setTag('//configs/metaCopyright',$copyright); $coreXml->setTag('//configs/privateKey',$key); $coreXml->setTag('//configs/defaultCharset',strtoupper($charset)); $coreXml->setTag('//configs/defaultDoctype',$doctype); $coreXml->setTag('//configs/defaultTimezone',$timezone_area."/".$timezone_city); file_put_contents($this->_generic->getPathConfig("configSecure")."site.xml", $coreXml->getXML()); $controllersXml = $this->_generic->getControllersXML(); $controllersXml->setTag("//controllers/controller[@name='SLS_Bo']/controllerLangs/controllerLang",$bo); $uniqs = array(); $metas = array(); // Generate Controllers IDS $slsControllers = $controllersXml->getTags("//controllers/controller[@side='sls']/@name"); $slsLangs = $controllersXml->getTags("//controllers/controller[@side='sls'][1]/scontrollers/scontroller[1]/scontrollerLangs/scontrollerLang/@lang"); foreach ($slsControllers as $slsController) { // Take a random id and set it $uniq = uniqid("c_"); while(in_array($uniq, $uniqs)) $uniq = uniqid("c_"); array_push($uniqs, $uniq); $controllersXml->setTagAttributes("//controllers/controller[@name='".$slsController."' and @side='sls']", array("id"=>$uniq)); // Generate Actions IDS $slsActions = $controllersXml->getTags("//controllers/controller[@side='sls' and @name='".$slsController."']/scontrollers/scontroller/@name"); foreach ($slsActions as $slsAction) { // Take a random id and set it $uniq = uniqid("a_"); while(in_array($uniq, $uniqs)) $uniq = uniqid("a_"); array_push($uniqs, $uniq); $controllersXml->setTagAttributes("//controllers/controller[@name='".$slsController."' and @side='sls']/scontrollers/scontroller[@name='".$slsAction."']", array("id"=>$uniq)); // Get title attribute, save it into array and delete this attribute $tmpArray = array(); foreach ($slsLangs as $lang) { $tmpArray[$lang] = array_shift($controllersXml->getTags("//controllers/controller[@name='".$slsController."' and @side='sls']/scontrollers/scontroller[@name='".$slsAction."']/scontrollerLangs/scontrollerLang[@lang='".$lang."']/@title")); $controllersXml->deleteTagAttribute("//controllers/controller[@name='".$slsController."' and @side='sls']/scontrollers/scontroller[@name='".$slsAction."']/scontrollerLangs/scontrollerLang[@lang='".$lang."']","title"); } $metas[$uniq] = $tmpArray; } } // Update metas.xml $metaXml = ''; foreach($metas as $key => $value) { $metaXml .= '<action id="'.$key.'">'; foreach ($value as $lang => $title) $metaXml .= '<title lang="'.$lang.'"><![CDATA['.$title.']]></title>'; $metaXml .= '<robots><![CDATA[noindex, nofollow]]></robots>'; $metaXml .= '</action>'; } $metaO = new SLS_XMLToolbox(file_get_contents($this->_generic->getPathConfig("configSls")."metas.xml")); $metaO->appendXML("//sls_configs",$metaXml); $metaO->saveXML($this->_generic->getPathConfig("configSls")."metas.xml"); // Overwrite template __default $this->createXslTemplate("__default",$doctype); file_put_contents($this->_generic->getPathConfig("configSecure")."controllers.xml", $controllersXml->getXML()); $this->setInstallationStep(array(0=>"SLS_Init",1=>"Initialization"), array(0=>"International",1=>"International")); return $this->_generic->dispatch("SLS_Init", "International"); } else { $xml->startTag("errors"); foreach ($errors as $error) $xml->addFullTag("error", $error, true); $xml->endTag("errors"); $xml->addFullTag("domain",$domain,true); $xml->addFullTag("protocol",$protocol,true); $xml->addFullTag("project",$project,true); $xml->addFullTag("description",$description,true); $xml->addFullTag("keywords",$keywords,true); $xml->addFullTag("author",$author,true); $xml->addFullTag("copyright",$copyright,true); $xml->addFullTag("extension",$extension,true); $xml->addFullTag("charset",$charset,true); $xml->addFullTag("doctype",$doctype,true); $xml->addFullTag("bo",$bo,true); $xml->startTag("timezone"); $xml->addFullTag("area",$timezone_area,true); $xml->addFullTag("city",$timezone_city,true); $xml->endTag("timezone"); } } else { $timezone = date_default_timezone_get(); $xml->addFullTag("domain",$_SERVER['HTTP_HOST'].(($_SERVER['SCRIPT_NAME'] != "/index.php") ? SLS_String::substrBeforeFirstDelimiter($_SERVER['SCRIPT_NAME'],"/index.php") : ""),true); $xml->addFullTag("protocol",(SLS_String::startsWith($_SERVER['SERVER_PROTOCOL'],'HTTPS')) ? 'https' : 'http',true); $xml->addFullTag("author","SillySmart",true); $xml->addFullTag("extension","sls",true); $xml->startTag("timezone"); $xml->addFullTag("area",(empty($timezone) || !SLS_String::contains($timezone,'/')) ? 'Europe' : SLS_String::substrBeforeFirstDelimiter($timezone,'/'),true); $xml->addFullTag("city",(empty($timezone) || !SLS_String::contains($timezone,'/')) ? 'Paris' : SLS_String::substrAfterFirstDelimiter($timezone,'/'),true); $xml->endTag("timezone"); $xml->addFullTag("bo","Manage",true); } $this->saveXML($xml); }
public function action() { $user = $this->hasAuthorative(); $sql = SLS_Sql::getInstance(); $xml = $this->getXML(); $xml = $this->makeMenu($xml); $errors = array(); // Get the table name $table = SLS_String::substrAfterFirstDelimiter($this->_http->getParam("name"),"_"); $db = SLS_String::substrBeforeFirstDelimiter($this->_http->getParam("name"),"_"); $class = ucfirst($db)."_".SLS_String::tableToClass($table); $file = ucfirst($db).".".SLS_String::tableToClass($table); // If current db is not this one if ($sql->getCurrentDb() != $db) $sql->changeDb($db); if ($sql->tableExists($table)) { if ($this->_http->getParam("reload") == "true") { $columnWanted = $this->_http->getParam("column"); $filterWanted = $this->_http->getParam("filter"); $pathsHandle = file_get_contents($this->_generic->getPathConfig("configSls")."/fks.xml"); $xmlFk = new SLS_XMLToolbox($pathsHandle); $pathsHandle = file_get_contents($this->_generic->getPathConfig("configSls")."/types.xml"); $xmlType = new SLS_XMLToolbox($pathsHandle); $pathsHandle = file_get_contents($this->_generic->getPathConfig("configSls")."/filters.xml"); $xmlFilter = new SLS_XMLToolbox($pathsHandle); $result = $xmlFilter->getTags("//sls_configs/entry[@table='".$db."_".$table."' and @column='".$columnWanted."' and @filter='".$filterWanted."']"); // If an entry already exists in the XML, delete this record if (!empty($result)) { $xmlTmp = $xmlFilter->deleteTags("//sls_configs/entry[@table='".$db."_".$table."' and @column='".$columnWanted."' and @filter='".$filterWanted."']"); $xmlFilter->saveXML($this->_generic->getPathConfig("configSls")."/filters.xml",$xmlTmp); $pathsHandle = file_get_contents($this->_generic->getPathConfig("configSls")."/filters.xml"); $xmlFilter = new SLS_XMLToolbox($pathsHandle); } if ($filterWanted == "hash") { $passwordHash = $this->_http->getParam("hash"); // Save it into the XML $xmlNode = '<entry table="'.$db.'_'.$table.'" column="'.$columnWanted.'" hash="'.$passwordHash.'" filter="'.$filterWanted.'" />'; $xmlFilter->appendXMLNode("//sls_configs",$xmlNode); $xmlFilter->saveXML($this->_generic->getPathConfig("configSls")."/filters.xml",$xmlFilter->getXML()); } else { // Save it into the XML $xmlNode = '<entry table="'.$db.'_'.$table.'" column="'.$columnWanted.'" filter="'.$filterWanted.'" />'; $xmlFilter->appendXMLNode("//sls_configs",$xmlNode); $xmlFilter->saveXML($this->_generic->getPathConfig("configSls")."/filters.xml",$xmlFilter->getXML()); } // Update model $this->_generic->goDirectTo("SLS_Bo","UpdateModel",array(array("key"=>"name","value"=>$this->_http->getParam("name")))); } // Get generic object $this->_generic->useModel($table,$db,"user"); $object = new $class(); // Get object's infos $pathsHandle = file_get_contents($this->_generic->getPathConfig("configSls")."/fks.xml"); $xmlFk = new SLS_XMLToolbox($pathsHandle); $columnsP = $object->getParams(); $pk = $object->getPrimaryKey(); $multilanguage = $object->isMultilanguage(); $xml->startTag("model"); $xml->addFullTag("table",$table,true); $xml->addFullTag("db",$db,true); $xml->addFullTag("class",$class,true); $xml->addFullTag("pk",$pk,true); $xml->addFullTag("multilanguage",($multilanguage) ? "true" : "false",true); $xml->startTag("columns"); foreach($columnsP as $column => $value) { $res = $xmlFk->getTags("//sls_configs/entry[@tableFk='".$db."_".$table."' and @columnFk='".$column."']/@tablePk"); if ($object->getPrimaryKey() != $column && $column != "pk_lang" && empty($res)) $xml->addFullTag("column",$column,true); } $xml->endTag("columns"); $xml->endTag("model"); } else { $xml->addFullTag("error","Sorry this table doesn't exist anymore",true); } $this->saveXML($xml); }
public function action() { $user = $this->hasAuthorative(); $sql = SLS_Sql::getInstance(); $xml = $this->getXML(); $xml = $this->makeMenu($xml); $errors = array(); // Get the table name $table = SLS_String::substrAfterFirstDelimiter($this->_http->getParam("name"),"_"); $db = SLS_String::substrBeforeFirstDelimiter($this->_http->getParam("name"),"_"); $column= $this->_http->getParam("column"); $class = ucfirst($db)."_".SLS_String::tableToClass($table); $file = ucfirst($db).".".SLS_String::tableToClass($table); // If current db is not this one if ($sql->getCurrentDb() != $db) $sql->changeDb($db); if ($sql->tableExists($table)) { if ($this->_http->getParam("reload") == "true") { $replacements = array('&','>','<','=','"',"'"); $masks = array('&','>','<','=','','',''); $columnWanted = $this->_http->getParam("column"); $tableWanted = $this->_http->getParam("table"); $labelWanted = $this->_http->getParam($tableWanted.'_fkLabel'); $labelSpecified = SLS_String::trimSlashesFromString($this->_http->getParam("fkLabel_specified")); $multilang = $this->_http->getParam("multilanguage"); $onDelete = $this->_http->getParam("ondelete"); $pathsHandle = file_get_contents($this->_generic->getPathConfig("configSls")."/fks.xml"); $xmlFk = new SLS_XMLToolbox($pathsHandle); $pathsHandle = file_get_contents($this->_generic->getPathConfig("configSls")."/types.xml"); $xmlType = new SLS_XMLToolbox($pathsHandle); $pathsHandle = file_get_contents($this->_generic->getPathConfig("configSls")."/filters.xml"); $xmlFilter = new SLS_XMLToolbox($pathsHandle); if (!empty($labelSpecified)) $labelSpecified = str_replace(array('='),array('='),htmlentities(strtolower($labelSpecified),ENT_QUOTES,"UTF-8")); $result = $xmlFk->getTags("//sls_configs/entry[@tableFk='".$db."_".$table."' and @columnFk='".$columnWanted."' and @tablePk='".$tableWanted."']"); // If an entry already exists in the XML, delete this record if (!empty($result)) { $xmlTmp = $xmlFk->deleteTags("//sls_configs/entry[@tableFk='".$db."_".$table."' and @columnFk='".$columnWanted."' and @tablePk='".$tableWanted."']"); $xmlFk->saveXML($this->_generic->getPathConfig("configSls")."/fks.xml",$xmlTmp); $pathsHandle = file_get_contents($this->_generic->getPathConfig("configSls")."/fks.xml"); $xmlFk = new SLS_XMLToolbox($pathsHandle); } // Save it into the XML $xmlNode = '<entry tableFk="'.$db."_".$table.'" columnFk="'.$columnWanted.'" multilanguage="'.$multilang.'" ondelete="'.$onDelete.'" labelPk="'.(empty($labelSpecified) ? $labelWanted : $labelSpecified).'" tablePk="'.$tableWanted.'" />'; $xmlFk->appendXMLNode("//sls_configs",$xmlNode); $xmlFk->saveXML($this->_generic->getPathConfig("configSls")."/fks.xml",$xmlFk->getXML()); // Update model $this->_generic->goDirectTo("SLS_Bo","UpdateModel",array(array("key"=>"name","value"=>$this->_http->getParam("name")))); } // Get generic object $this->_generic->useModel(SLS_String::tableToClass($table),$db,"user"); $object = new $class(); // Get object's infos $pathsHandle = file_get_contents($this->_generic->getPathConfig("configSls")."/fks.xml"); $xmlFk = new SLS_XMLToolbox($pathsHandle); $columnsP = $object->getParams(); $pk = $object->getPrimaryKey(); $multilanguage = $object->isMultilanguage(); $xml->startTag("model"); $xml->addFullTag("table",$table,true); $xml->addFullTag("db",$db,true); $xml->addFullTag("class",$class,true); $xml->addFullTag("pk",$pk,true); $xml->addFullTag("multilanguage",($multilanguage) ? "true" : "false",true); $xml->startTag("columns"); foreach($columnsP as $key => $value) { if ($object->getPrimaryKey() != $key && $key != "pk_lang") $xml->addFullTag("column",$key,true); } $xml->endTag("columns"); $attributes = array_shift($xmlFk->getTagsAttributes("//sls_configs/entry[@tableFk='".strtolower($db."_".$table)."' and @ columnFk='".$column."']",array("multilanguage","labelPk","tablePk","ondelete"))); $this->_generic->useModel(SLS_String::substrAfterFirstDelimiter($attributes["attributes"][2]["value"],"_"),ucfirst(SLS_String::substrBeforeFirstDelimiter($attributes["attributes"][2]["value"],"_")),"user"); $className = ucfirst($attributes["attributes"][2]["value"]); $objectN = new $className(); $columns = $objectN->getColumns(); $specificPattern = true; foreach($columns as $key) if ($key == $attributes["attributes"][1]["value"]) $specificPattern = false; $xml->startTag("current_values"); $xml->addFullTag("tableFk",$db."_".SLS_String::tableToClass($table),true); $xml->addFullTag("columnFk",$column,true); $xml->addFullTag("multilanguage",$attributes["attributes"][0]["value"],true); $xml->addFullTag("labelPk",$attributes["attributes"][1]["value"],true); $xml->addFullTag("tablePk",$attributes["attributes"][2]["value"],true); $xml->addFullTag("ondelete",$attributes["attributes"][3]["value"],true); $xml->addFullTag("specific_pattern",($specificPattern) ? "true" : "false",true); $xml->endTag("current_values"); $tables = $this->getAllModels(); sort($tables,SORT_REGULAR); $xml->startTag("tables"); for($i=0 ; $i<$count=count($tables) ; $i++) { if (SLS_String::startsWith($tables[$i],$db)) { $xml->startTag("table"); $xml->addFullTag("name",SLS_String::substrAfterFirstDelimiter($tables[$i],".")); $xml->addFullTag("db",SLS_String::substrBeforeFirstDelimiter($tables[$i],".")); $tableN = SLS_String::substrAfterFirstDelimiter($tables[$i],"."); $dbN = SLS_String::substrBeforeFirstDelimiter($tables[$i],"."); $classN = ucfirst($dbN)."_".SLS_String::tableToClass($tableN); $this->_generic->useModel($tableN,$dbN,"user"); $obj = new $classN(); $properties = $obj->getParams(); $xml->startTag("columns"); foreach($properties as $key => $value) if ($key != "pk_lang") $xml->addFullTag("column",$key,true); $xml->endTag("columns"); $xml->endTag("table"); } } $xml->endTag("tables"); $xml->endTag("model"); } else { $xml->addFullTag("error","Sorry this table doesn't exist anymore",true); } $this->saveXML($xml); }
public function action() { set_time_limit(0); $user = $this->hasAuthorative(); $xml = $this->getXML(); $xml = $this->makeMenu($xml); $controllersXML = $this->_generic->getControllersXML(); $controller = $controllersXML->getTag("//controllers/controller[@isBo='true']/@name"); $tokenSecret = sha1(substr($this->_generic->getSiteConfig("privateKey"), 0, 3).substr($this->_generic->getSiteConfig("privateKey"), strlen($this->_generic->getSiteConfig("privateKey"))-3)); $xmlBo = new SLS_XMLToolbox(file_get_contents($this->_generic->getPathConfig("configSls")."/bo.xml")); $xmlFk = new SLS_XMLToolbox(file_get_contents($this->_generic->getPathConfig("configSls")."/fks.xml")); $xmlType = new SLS_XMLToolbox(file_get_contents($this->_generic->getPathConfig("configSls")."/types.xml")); // Check if bo controller already exist if (empty($controller)) { $xml->startTag("errors"); $xml->addFullTag("error","Back-office controller could not be found. Please follow the following link to create it.",true); $xml->endTag("errors"); } // Else, let's choose the models else { // If reload if ($this->_http->getParam("reload") == "true") { $modelsWanted = $this->_http->getParam("models"); $langs = $this->_lang->getSiteLangs(); if (is_array($modelsWanted)) { // Foreach models choose, generate files foreach($modelsWanted as $model) { $db = Sls_String::substrBeforeFirstDelimiter($model,"."); $table = Sls_String::substrAfterFirstDelimiter($model,"."); # Node into bo.xml $boPath = "//sls_configs/entry[@type='table' and @name='".strtolower($db."_".$table)."']"; $boExists = $xmlBo->getTag($boPath."/@type"); if (empty($boExists)) $boPath = "//sls_configs/entry/entry[@type='table' and @name='".strtolower($db."_".$table)."']"; $boExists = $xmlBo->getTag($boPath); if (empty($boExists)) { $this->_generic->useModel(SLS_String::tableToClass($table),ucfirst(strtolower($db)),"user"); $class = ucfirst(strtolower($db))."_".SLS_String::tableToClass($table); $object = new $class(); $xmlNode = ' <entry type="table" name="'.strtolower($db."_".$table).'" multilanguage="'.(($object->isMultilanguage()) ? "true" : "false").'">'."\n"; $xmlNode .= ' <columns>'."\n"; foreach($object->getColumns() as $column) { // Avoid pk $isPk = ($column == $object->getPrimaryKey() || $column == 'pk_lang') ? true : false; // Avoid fk $fkExist = $xmlFk->getTag("//sls_configs/entry[@tableFk='".strtolower($db."_".$table)."' and @columnFk='".$column."']/@tablePk"); $isFk = (!empty($fkExist)) ? true : false; // Avoid quick edit on type file $fileExist = $xmlType->getTag("//sls_configs/entry[@table='".strtolower($db."_".$table)."' and @column='".$column."' and (@type='file_all' or @type='file_img')]/@column"); $isFile = (!empty($fileExist)) ? true : false; $xmlNode .= ' <column table="'.strtolower($db."_".$table).'" name="'.$column.'" multilanguage="'.(($object->isMultilanguage() && !$isPk) ? "true" : "false").'" displayFilter="true" displayList="'.(($isFk) ? "false" : "true").'" allowEdit="'.(($isPk || $isFk || $isFile) ? "false" : "true").'" allowHtml="false" />'."\n"; } $xmlNode .= ' </columns>'."\n"; $xmlNode .= ' </entry>'."\n"; $xmlBo->appendXMLNode("//sls_configs",$xmlNode); $xmlBo->saveXML($this->_generic->getPathConfig("configSls")."/bo.xml",$xmlBo->getXML()); $xmlBo->refresh(); } # /Node into bo.xml # BoActions $boActions = array("List","Add","Modify","Clone","Delete"); foreach($boActions as $boAction) { // Generate Action $action = ucfirst(strtolower($boAction)).ucfirst(strtolower($db))."_".SLS_String::tableToClass($table); $params = array(0 => array("key" => "reload", "value" => "true"), 1 => array("key" => "Controller", "value" => $controller), 2 => array("key" => "actionName", "value" => $action), 3 => array("key" => "token", "value" => $tokenSecret), 4 => array("key" => "template", "value" => "bo"), 5 => array("key" => "dynamic", "value" => "on"), 6 => array("key" => "indexes", "value" => "noindex,nofollow") ); foreach($langs as $lang) { $tmpParam = array("key" => $lang."-action", "value" => $action."_".$lang); $tmpTitle = array("key" => $lang."-title", "value" => $action); array_push($params,$tmpParam); array_push($params,$tmpTitle); } file_get_contents($this->_generic->getFullPath("SLS_Bo", "AddAction", $params, true)); // Erase Action if (file_exists($this->_generic->getPathConfig("installDeployement")."Controllers/Actions/{{USER_BO}}/".$boAction."{{DB}}_{{TABLE}}.controller.php")) { $source = str_replace(array("{{USER_BO}}","{{DB}}","{{TABLE}}"),array($controller,ucfirst(strtolower($db)),SLS_String::tableToClass($table)),file_get_contents($this->_generic->getPathConfig("installDeployement")."Controllers/Actions/{{USER_BO}}/".$boAction."{{DB}}_{{TABLE}}.controller.php")); file_put_contents($this->_generic->getPathConfig("actionsControllers").$controller."/".$action.".controller.php",$source); } // Erase View Head if (file_exists($this->_generic->getPathConfig("installDeployement")."Views/Headers/{{USER_BO}}/".$boAction."{{DB}}_{{TABLE}}.xsl")) { $source = str_replace(array("{{USER_BO}}","{{DB}}","{{TABLE}}"),array($controller,ucfirst(strtolower($db)),SLS_String::tableToClass($table)),file_get_contents($this->_generic->getPathConfig("installDeployement")."Views/Headers/{{USER_BO}}/".$boAction."{{DB}}_{{TABLE}}.xsl")); file_put_contents($this->_generic->getPathConfig("viewsHeaders").$controller."/".$action.".xsl",$source); } // Erase View Body if (file_exists($this->_generic->getPathConfig("installDeployement")."Views/Body/{{USER_BO}}/".$boAction."{{DB}}_{{TABLE}}.xsl")) { $source = str_replace(array("{{USER_BO}}","{{DB}}","{{TABLE}}"),array($controller,ucfirst(strtolower($db)),SLS_String::tableToClass($table)),file_get_contents($this->_generic->getPathConfig("installDeployement")."Views/Body/{{USER_BO}}/".$boAction."{{DB}}_{{TABLE}}.xsl")); file_put_contents($this->_generic->getPathConfig("viewsBody").$controller."/".$action.".xsl",$source); } } # /BoActions } $this->_generic->forward("SLS_Bo","ManageRights"); } } $sql = SLS_Sql::getInstance(); $models = $this->getAllModels(); $dbs = $sql->getDbs(); sort($dbs,SORT_REGULAR); $xml->startTag("dbs"); foreach($dbs as $db) { sort($models,SORT_REGULAR); $xml->startTag("db"); $xml->addFullTag("name",$db,true); $xml->startTag("models"); for($i=0 ; $i<$count=count($models) ; $i++) { if (SLS_String::startsWith($models[$i],$db)) { $xml->startTag("model"); $xml->addFullTag("name",SLS_String::substrAfterFirstDelimiter($models[$i],"."),true); $xml->addFullTag("existed",($this->boActionExist(SLS_String::substrAfterFirstDelimiter($models[$i],"."),SLS_String::substrBeforeFirstDelimiter($models[$i],"."))) ? "true" : "false",true); $xml->endTag("model"); } } $xml->endTag("models"); $xml->endTag("db"); } $xml->endTag("dbs"); } $xml->addFullTag("url_add_controller",$this->_generic->getFullPath("SLS_Bo","AddController",array(0=>array("key"=>"isBo","value"=>"true"))),true); $this->saveXML($xml); }