function axWFactoryDomainCRUD($type = "add") { global $wgRequest, $wgUser, $wgExternalSharedDB, $wgOut; $sDomain = $wgRequest->getVal("domain"); $city_id = $wgRequest->getVal("cityid"); if (!$wgUser->isAllowed('wikifactory')) { $wgOut->readOnlyPage(); #--- later change to something reasonable return; } if (empty($city_id)) { $wgOut->readOnlyPage(); #--- later change to something reasonable return; } $dbw = wfGetDB(DB_MASTER, array(), $wgExternalSharedDB); $aDomains = array(); $aResponse = array(); $sInfo = ""; switch ($type) { case "add": if (!preg_match("/^[\\w\\.\\-]+\$/", $sDomain)) { /** * check if domain is valid (a im sure that there is function * somewhere for such purpose */ $sInfo .= "Error: Domain <em>{$sDomain}</em> is invalid (or empty) so it's not added."; } else { $added = WikiFactory::addDomain($city_id, $sDomain); if ($added) { $sInfo .= "Success: Domain <em>{$sDomain}</em> added."; } else { $sInfo .= "Error: Domain <em>{$sDomain}</em> is already used so it's not added."; } } break; case "change": $sNewDomain = $wgRequest->getVal("newdomain"); #--- first, check if domain is not used $oRes = $dbw->select("city_domains", "count(*) as count", array("city_domain" => $sNewDomain), __METHOD__); $oRow = $dbw->fetchObject($oRes); $dbw->freeResult($oRes); if ($oRow->count > 0) { #--- domain is used already $sInfo .= "<strong>Error: Domain <em>{$sNewDomain}</em> is already used so no change was done.</strong>"; } elseif (!preg_match("/^[\\w\\.\\-]+\$/", $sNewDomain)) { #--- check if domain is valid (a im sure that there is function #--- somewhere for such purpose $sInfo .= "<strong>Error: Domain <em>{$sNewDomain}</em> is invalid so no change was done..</strong>"; } else { #--- reall change domain $dbw->update("city_domains", array("city_domain" => strtolower($sNewDomain)), array("city_id" => $city_id, "city_domain" => strtolower($sDomain))); $dbw->commit(); $sInfo .= "Success: Domain <em>{$sDomain}</em> changed to <em>{$sNewDomain}</em>."; } break; case "remove": $removed = WikiFactory::removeDomain($city_id, $sDomain); if ($removed) { $sInfo .= "Success: Domain <em>{$sDomain}</em> removed."; } else { $sInfo .= "Failed: Domain <em>{$sDomain}</em> was not removed."; } break; case "status": $iNewStatus = $wgRequest->getVal("status"); if (in_array($iNewStatus, array(0, 1, 2))) { #--- updatec city_list table $dbw->update("city_list", array("city_public" => $iNewStatus), array("city_id" => $city_id)); $dbw->commit(); switch ($iNewStatus) { case 0: $aResponse["div-body"] = "<strong>changed to disabled</strong>"; break; case 1: $aResponse["div-body"] = "<strong>changed to enabled</strong>"; break; case 2: $aResponse["div-body"] = "<strong>changed to redirected</strong>"; break; } } else { $aResponse["div-body"] = "wrong status number"; } $aResponse["div-name"] = "wf-domain-span"; break; case "cancel": $sInfo .= "<em>Action cancelled</em>"; break; case "setmain": $setmain = WikiFactory::setmainDomain($city_id, $sDomain); if ($setmain) { $sInfo .= "Success: Domain <em>{$sDomain}</em> set as main."; } else { $sInfo .= "Failed: Domain <em>{$sDomain}</em> was not set as main."; } break; } #--- get actuall domain list $aDomains = WikiFactory::getDomains($city_id, true); #--- send response, return domain array $aResponse["domains"] = $aDomains; $aResponse["info"] = $sInfo; return json_encode($aResponse); }