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."}"; }