Exemplo n.º 1
0
 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 . "}";
 }
Exemplo n.º 2
0
 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:\"\"}";
 }
Exemplo n.º 3
0
	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."}";
	}