private static function _actionSilentRegLoginCheck() { if (!isset(self::$session["reg-login-checktime"])) { self::$session["reg-login-checktime"] = 0; } $tm = time(); if ($tm - self::$session["reg-login-checktime"] < 2) { echo "{login:false,email:false,lmsg:false,emsg:false}"; return; } self::$session["reg-login-checktime"] = $tm; $login = self::$c->post(self::$class . "-reg-name"); $email = self::$c->post(self::$class . "-reg-email"); if (lib::mquotes_gpc()) { $login = @stripslashes($login); $email = @stripslashes($email); } $lmsg = ""; $lres = "false"; $emsg = ""; $eres = "false"; if (!lib::validStr("user", $login, 4, 32, true, "Логин", false)) { $lmsg = lib::getLastMsg(); } else { $r = db::q("SELECT `id` FROM " . db::tnm(self::$class) . " WHERE `user`='" . db::esc($login) . "'", false); if ($r && !db::rows($r)) { $lres = "true"; } } if (!lib::validEmail($email, false)) { $emsg = lib::getLastMsg(); } else { $r = db::q("SELECT `id` FROM " . db::tnm(self::$class) . " WHERE `email`='" . db::esc($email) . "'", false); if ($r && !db::rows($r)) { $eres = "true"; } } @header("Content-Type: application/json"); return "{login:"******",lmsg:" . $lmsg . ",email:" . $eres . ",emsg:" . $emsg . "}"; }
private static function _actionSilentItemSave() { $res = "{res:"; //проверяем id $id = 0 + self::post(self::$class . "-admin-item-id"); if (!$id) { echo $res . "false,critical:true,msg:\"Невозможно выполнить операцию: задан неверный идентификатор меню [" . $id . "]\"}"; return; } $r = self::q("SELECT `alias` FROM " . self::tb(self::$class) . " WHERE `id`=" . $id . "", false); if ($r === false) { echo $res . "false,critical:true,msg:\"Ошибка операции с базой данных\"}"; return; } $rec = mysql_fetch_assoc($r); if (!$rec) { echo $res . "false,critical:true,msg:\"Ошибка: указанное меню [" . $id . "] не существует или было удалено ранее.\"}"; return; } $alias = $rec["alias"]; $chs = array(); if (self::posted(self::$class . "-admin-item-act")) { $chs["act"] = 0 + self::post(self::$class . "-admin-item-act") ? 1 : 0; } if (self::posted(self::$class . "-admin-item-alias")) { $chs["alias"] = self::post(self::$class . "-admin-item-alias"); if (!$chs["alias"]) { echo $res . "false,msg:\"Ошибка: Алиас меню не может быть пустым.\"}"; return; } if (lib::mquotes_gpc()) { $chs["alias"] = stripslashes($chs["alias"]); } if (!preg_match("/^([a-zA-Z_]+)\$/", $chs["alias"])) { echo $res . "false,msg:\"Ошибка: Алиас меню содержит недопустимые символы, разрешены: [a-zA-Z_].\"}"; return; } if (strlen($chs["alias"]) > 32) { echo $res . "false,msg:\"Ошибка: Алиас должен быть не длиннее 32 символов.\"}"; return; } if ($alias != $chs["alias"]) { $r = self::q("SELECT `id` FROM " . self::tb(self::$class) . " WHERE `alias`='" . $alias . "'", false); if ($r === false) { echo $res . "false,critical:true,msg:\"Ошибка операции с базой данных!\"}"; return; } $rec = mysql_fetch_assoc($r); if ($rec) { echo $res . "false,msg:\"Указанный алиас уже используется в другом меню [" . $rec["id"] . "].\"}"; return; } } } if (self::posted(self::$class . "-admin-item-cache")) { $chs["cache"] = 0 + self::post(self::$class . "-admin-item-cache") ? 1 : 0; } if (self::posted(self::$class . "-admin-item-lvls")) { $chs["lvls"] = 0 + self::post(self::$class . "-admin-item-lvls"); if ($chs["lvls"] > self::$config["maxLookLvls"]) { echo $res . "false,msg:\"Ошибка: маскимальное значение глубины просмотра структуры меню не должно превышать " . (self::$config["maxLookLvls"] + 1) . "\"}"; return; } } if (self::posted(self::$class . "-admin-item-showtitle")) { $chs["showtitle"] = 0 + self::post(self::$class . "-admin-item-showtitle") ? 1 : 0; } if (self::posted(self::$class . "-admin-item-title")) { $chs["title"] = self::post(self::$class . "-admin-item-title"); if ($chs["title"]) { if (lib::mquotes_gpc()) { $chs["title"] = stripslashes($chs["title"]); } if (mb_strlen($chs["title"], "UTF-8") > 64) { echo $res . "false,msg:\"Ошибка: заголовок меню должен быть не длиннее 64 символов.\"}"; return; } } } if (!count($chs)) { echo $res . "false,critical:true,msg:\"Ошибка: новые данные для применения изменений не найдены.\"}"; return; } $keys = array_keys($chs); $slq = array(); foreach ($keys as $i => $key) { switch ($key) { case "act": $sql[] = "`act`=" . $chs["act"]; break; case "alias": $sql[] = "`alias`='" . $chs["alias"] . "'"; break; case "cache": $sql[] = "`cache`=" . $chs["cache"]; break; case "lvls": $sql[] = "`lvls`=" . $chs["lvls"]; break; case "showtitle": $sql[] = "`showtitle`=" . $chs["showtitle"]; break; case "title": $sql[] = "`title`='" . mysql_real_escape_string($chs["title"]) . "'"; break; } } $r = self::q("UPDATE " . self::tb(self::$class) . " SET " . implode(",", $sql) . " WHERE `id`=" . $id, false); if ($r === false) { echo $res . "false,critical:true,msg:\"Ошибка операции с базой данных!\"}"; return; } echo $res . "true,msg:\"\"}"; }
private static function _actionSilentLibFileEdit() { $res="{res:"; $module=self::$c->post(self::$class."-lib-files-module"); $entity=0+self::$c->post(self::$class."-lib-files-entity"); //проверка модуля if(!$module || !@class_exists(__NAMESPACE__."\\".$module)) { $res.="false,msg:\"Ссылочный модуль не найден [".$module."]\"}"; echo $res; return; } $mid=self::$c->modId($module,true); if(!$mid) { echo $res."false,msg:\"Ссылочный модуль не найден [".$module."]\"}"; return; } //проверяем id $id=0+self::$c->post(self::$class."-lib-file-id"); if(!$id) { echo $res."false,msg:\"Невозможно выполнить операцию: задан неверный идентификатор файла [".$id."]\"}"; return; } //проверяем name $name=self::$c->post(self::$class."-lib-file-name"); //проверяем title $title=self::$c->post(self::$class."-lib-file-title"); //проверяем credit $credit=self::$c->post(self::$class."-lib-file-credit"); if(lib::mquotes_gpc()) { $name=stripslashes($name); $title=stripslashes($title); $credit=stripslashes($credit); } if(!lib::validStr($name,LIB_STR_TYPE_FILE,true,1,128,true,"Название файла")) { echo $res."false,msg:\"".lib::lastMsg()."\"}"; return; } $name_id=(0+self::$c->post(self::$class."-lib-file-noid"))?0:1; if(!$name)$name_id=1;//защита от "пустого" имени $name_sized=(0+self::$c->post(self::$class."-lib-file-nosizes"))?0:1; //находим запись по id $uid=auth::user("id"); $q="SELECT `width`,`height`,`name_id`,`name_sized`,`size_delim`,`extension`,`name`,`directory`,`content_type` FROM ".db::tnm(self::$class)." WHERE `id`={$id} AND `mid`={$mid}".(!auth::admin()?" AND `uid`={$uid}":""); $r=db::q($q,false); if($r===false) { echo $res."false,msg:\"Ошибка операции с базой данных [".__LINE__."]\"}"; return; } $rec=@mysql_fetch_assoc($r); if(!$rec) { echo $res."false,msg:\"Невозможно выполнить операцию: нет доступа или изображение не зарегистрировано\"}"; return; } $old_nameId=0+$rec["name_id"]; $old_sizeDelim=$rec["size_delim"]; $ext=$rec["extension"]; $old_name=$rec["name"]; $dir=$rec["directory"]; $ctype=$rec["content_type"]; $is_image=false; if(substr($ctype,0,5)=="image") { $is_image=true; $wd=0+$rec["width"]; $ht=0+$rec["height"]; $old_nameSized=0+$rec["name_sized"]; } else $old_nameSized=0; $old_filename=($old_name?(($old_nameId?($id.$old_sizeDelim):"").$old_name):$id).($is_image?($old_nameSized?($old_sizeDelim.$wd."x".$ht):""):"").".".$ext; $old_filepath=$dir."/".$old_filename; if(!@file_exists($old_filepath)) { echo $res."false,msg:\"Невозможно выполнить операцию: указанный файл не найден [".$old_filepath."]\"}"; return; } //пытаемся переименовать файл $new_filename=($name?(($name_id?($id.$old_sizeDelim):"").$name):$id).($is_image?($name_sized?($old_sizeDelim.$wd."x".$ht):""):"").".".$ext; if($new_filename!=$old_filename) { if(@file_exists($dir."/".$new_filename)) { echo $res."false,msg:\"Невозможно переименовать файл: другой файл с таким же именем уже существует [".$new_filename."]\"}"; return; } @rename($old_filepath,$dir."/".$new_filename); if(!@file_exists($dir."/".$new_filename)) { echo $res."false,msg:\"Шибка переименования файла: ошибка файловой системы, обратитесь к разработчикам сайта [".msgr::config(MSGR_EMAIL_DEVEL)."].\"}"; return; } } $q="UPDATE ".db::tnm(self::$class)." SET `name`='".mysql_real_escape_string($name)."',`title`='".mysql_real_escape_string($title)."', `credit`='".mysql_real_escape_string($credit)."', `name_id`=".$name_id.",`name_sized`=".$name_sized." WHERE `id`=".$id; $r=db::q($q,false); if($r===false) { @rename($dir."/".$new_filename,$old_filepath); echo $res."false,msg:\"Ошибка операции с базой данных [".__LINE__."]\"}"; return; } $item="{id:".$id.",name_id:".($name_id?"true":"false").",name_sized:".($name_sized?"true":"false").",filename:\"".$new_filename."\",name:\"".$name."\",title:\"".str_replace("\"","\\\"",$title)."\",credit:\"".str_replace("\"","\\\"",$credit)."\"}"; echo $res."true,msg:\"\",item:".$item."}"; }