/** * Добавляет блог в БД * * @param ModuleBlog_EntityBlog $oBlog Объект блога * @return int|bool */ public function AddBlog(ModuleBlog_EntityBlog $oBlog) { $sql = "INSERT INTO " . Config::Get('db.table.blog') . " \n\t\t\t(user_owner_id,\n\t\t\tblog_title,\n\t\t\tblog_description,\n\t\t\tblog_type,\t\t\t\n\t\t\tblog_date_add,\n\t\t\tblog_limit_rating_topic,\n\t\t\tblog_url,\n\t\t\tblog_avatar\n\t\t\t)\n\t\t\tVALUES(?d, ?,\t?,\t?,\t?,\t?, ?, ?)\n\t\t"; if ($iId = $this->oDb->query($sql, $oBlog->getOwnerId(), $oBlog->getTitle(), $oBlog->getDescription(), $oBlog->getType(), $oBlog->getDateAdd(), $oBlog->getLimitRatingTopic(), $oBlog->getUrl(), $oBlog->getAvatar())) { return $iId; } return false; }
/** * Проверяет может ли пользователь создавать топики в определенном блоге * * @param Entity_User $oUser * @param Entity_Blog $oBlog * @return bool */ public function CanAddTopic(ModuleUser_EntityUser $oUser, ModuleBlog_EntityBlog $oBlog) { /** * Если юзер является создателем блога то разрешаем ему постить */ if ($oUser->getId() == $oBlog->getOwnerId()) { return true; } /** * Если рейтинг юзера больше либо равен порогу постинга в блоге то разрешаем постинг */ if ($oUser->getRating() >= $oBlog->getLimitRatingTopic()) { return true; } return false; }
/** * Проверяет можно или нет пользователю удалять данный блог * * @param ModuleBlog_EntityBlog $oBlog Блог * @param ModuleUser_EntityUser $oUser Пользователь * * @return bool|int */ public function IsAllowDeleteBlog($oBlog, $oUser) { // * Разрешаем если это админ сайта if ($oUser->isAdministrator() || $oUser->isModerator()) { return self::CAN_DELETE_BLOG_WITH_TOPICS; } // * Разрешаем владелецу, но только пустой if ($oBlog->getOwnerId() == $oUser->getId()) { return self::CAN_DELETE_BLOG_EMPTY_ONLY; } $oBlogUser = E::ModuleBlog()->GetBlogUserByBlogIdAndUserId($oBlog->getId(), $oUser->getId()); if ($oBlogUser && $oBlogUser->IsBlogAdministrator()) { return self::CAN_DELETE_BLOG_EMPTY_ONLY; } return false; }
/** * Проверяет можно или нет пользователю управлять пользователями блога * * @param ModuleBlog_EntityBlog $oBlog Блог * @param ModuleUser_EntityUser $oUser Пользователь * @return bool */ public function IsAllowAdminBlog($oBlog, $oUser) { if ($oUser->isAdministrator()) { return true; } /** * Разрешаем если это создатель блога */ if ($oBlog->getOwnerId() == $oUser->getId()) { return true; } /** * Явлется ли авторизованный пользователь администратором блога */ $oBlogUser = $this->Blog_GetBlogUserByBlogIdAndUserId($oBlog->getId(), $oUser->getId()); if ($oBlogUser && $oBlogUser->getIsAdministrator()) { return true; } return false; }
/** * Добавляет блог в БД * * @param ModuleBlog_EntityBlog $oBlog - Объект блога * * @return int|bool */ public function AddBlog($oBlog) { $sql = "\n INSERT INTO ?_blog\n (\n user_owner_id,\n blog_title,\n blog_description,\n blog_type,\n blog_date_add,\n blog_limit_rating_topic,\n blog_url,\n blog_avatar\n )\n VALUES (\n ?d,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?\n )\n "; $nId = $this->oDb->query($sql, $oBlog->getOwnerId(), $oBlog->getTitle(), $oBlog->getDescription(), $oBlog->getType(), $oBlog->getDateAdd(), $oBlog->getLimitRatingTopic(), $oBlog->getUrl(), $oBlog->getAvatar()); return $nId ? $nId : false; }
/** * Загружает аватар в блог * * @param array $aFile Массив $_FILES при загрузке аватара * @param ModuleBlog_EntityBlog $oBlog Блог * @return bool */ public function UploadBlogAvatar($aFile, $oBlog) { if (!is_array($aFile) || !isset($aFile['tmp_name'])) { return false; } $sFileTmp = Config::Get('sys.cache.dir') . func_generator(); if (!move_uploaded_file($aFile['tmp_name'], $sFileTmp)) { return false; } $sPath = $this->Image_GetIdDir($oBlog->getOwnerId()) . "blogs/" . $oBlog->getId() . "/"; $aParams = $this->Image_BuildParams('avatar'); $oImage = $this->Image_CreateImageObject($sFileTmp); /** * Если объект изображения не создан, * возвращаем ошибку */ if ($sError = $oImage->get_last_error()) { // Вывод сообщения об ошибки, произошедшей при создании объекта изображения // $this->Message_AddError($sError,$this->Lang_Get('error')); @unlink($sFileTmp); return false; } /** * Срезаем квадрат */ $oImage = $this->Image_CropSquare($oImage); $aSize = Config::Get('module.blog.avatar_size'); rsort($aSize, SORT_NUMERIC); $sSizeBig = array_shift($aSize); if ($oImage && ($sFileAvatar = $this->Image_Resize($sFileTmp, $sPath, "avatar_blog_{$oBlog->getUrl()}_{$sSizeBig}x{$sSizeBig}", Config::Get('view.img_max_width'), Config::Get('view.img_max_height'), $sSizeBig, $sSizeBig, false, $aParams, $oImage))) { foreach ($aSize as $iSize) { if ($iSize == 0) { $this->Image_Resize($sFileTmp, $sPath, "avatar_blog_{$oBlog->getUrl()}", Config::Get('view.img_max_width'), Config::Get('view.img_max_height'), null, null, false, $aParams, $oImage); } else { $this->Image_Resize($sFileTmp, $sPath, "avatar_blog_{$oBlog->getUrl()}_{$iSize}x{$iSize}", Config::Get('view.img_max_width'), Config::Get('view.img_max_height'), $iSize, $iSize, false, $aParams, $oImage); } } @unlink($sFileTmp); /** * Если все нормально, возвращаем расширение загруженного аватара */ return $this->Image_GetWebPath($sFileAvatar); } @unlink($sFileTmp); /** * В случае ошибки, возвращаем false */ return false; }