コード例 #1
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."}";
	}