function indexText($text, $type, $id, &$trigramValues, &$suggestionValues) { if (!trim($text)) { return; } static $stopWords, $db; if (!$stopWords) { $stopWords = Lms_Application::getConfig('indexing', 'stop_words'); } if (!$db) { $db = Lms_Db::get('main'); } $trigrams = array(); $textLength = Lms_Text::length($text); if ($textLength >= 3) { for ($i = 0; $i <= $textLength - 3; $i++) { $trigram = substr($text, $i, 3); $trigramValues[] = sprintf("('%s','%s',%d)", mysql_real_escape_string(strtolower($trigram)), $type, $id); } } preg_match_all('{\\w{2,}}', strtolower($text), $words, PREG_PATTERN_ORDER); $wordsFiltered = array(); foreach (array_diff($words[0], $stopWords) as $word) { if (!preg_match('{^\\d+$}', $word)) { $wordsFiltered[] = $word; } } array_unshift($wordsFiltered, strtolower($text)); //print_r($wordsFiltered); foreach ($wordsFiltered as $word) { $suggestionValues[] = sprintf("('%s','%s',%d)", mysql_real_escape_string(trim($word, ' .\'"')), $type, $id); } }
public static function logon($params) { $config = Lms_Application::getConfig('auth'); $authProviderKey = $config['module']; $authClassName = 'Lms_Auth_Adapter_' . ucfirst($config['module']); $authAdapter = new $authClassName(Lms_Db::get($config['db'])); $authAdapter->setIdentity($params['username'])->setCredential($params['password']); $auth = Lms_MultiAuth::getInstance(); if (!$params['remember']) { $storage = $auth->getStorage(); $storage->setCookieExpire(0); } $result = $auth->authenticate($authAdapter, $config['module']); if (!$result->isValid()) { $auth->clearIdentity(); $errors = $result->getMessages(); $translate = Lms_Application::getTranslate(); foreach ($errors as &$error) { $error = $translate->translate($error); } return new Lms_Api_Response(401, 'Authorization failed', $errors); } else { return new Lms_Api_Response(200, 'OK'); } }
public static function updateLocalRating($filmId) { $db = Lms_Db::get('main'); $ratings = $db->selectCol("SELECT Rating FROM userfilmratings WHERE FilmID=?d", $filmId); $rating = self::getBayes($ratings, Lms_Application::getConfig('minratingcount')); $db->query("UPDATE films SET LocalRating=?d, CountLocalRating=?d, LocalRatingDetail=? WHERE ID=?d", round(10 * $rating['bayes']), $rating['count'], serialize($rating['detail']), $filmId); return $rating; }
public static function getFilm($params) { try { $filmId = (int) $params['film_id']; $user = Lms_User::getUser(); $db = Lms_Db::get('main'); if ($user->getId()) { $db->query('UPDATE users SET ViewActivity=ViewActivity+1 WHERE ID=?d', $user->getId()); } $avgHit = $db->selectCell('SELECT sum(Hit)/count(*) FROM films WHERE Hide=0'); $hitThreshold = round($avgHit * Lms_Application::getConfig('hit_factor')); $wheres = array(); if (!$user->isAllowed("film", "moderate")) { $wheres[] = " films.Hide=0 "; } $sql = "SELECT films.ID as film_id, " . "films.Name as name, " . "films.OriginalName as international_name, " . "films.Year as year, " . "films.RunTime as runtime, " . "films.Description as description, " . "films.MPAA as mpaa, " . "films.Resolution as resolution, " . "films.VideoInfo as video_info, " . "films.AudioInfo as audio_info, " . "films.Translation as translation, " . "films.Quality as quality, " . "films.CreateDate as create_date, " . "films.UpdateDate as update_date, " . "ROUND(films.ImdbRating/10, 1) as rating_imdb_value, " . "IF(LENGTH(films.imdbID)>0, CONCAT('http://www.imdb.com/title/', films.imdbID), '') as imdb_url, " . "films.Poster as poster, " . "films.BigPosters as big_posters, " . "films.Trailer as trailer, " . "films.TypeOfMovie as type_of_movie, " . "films.Hide as hide, " . "films.Hit as hit, " . "films.SoundTrack as soundtrack, " . "films.Links as links, " . "films.Present as present, " . "films.Group as `group`, " . "films.Frames as frames, " . "films.SmallFrames as small_frames, " . "ufr.Rating as rating_personal_value, " . "ROUND(films.LocalRating/10, 1) as rating_local_value, " . "films.LocalRatingDetail as rating_local_detail, " . "films.CountLocalRating as rating_local_count, " . "users.Login as moderator " . "FROM films " . " LEFT JOIN userfilmratings ufr ON (films.ID = ufr.FilmID AND ufr.UserID=?d) " . " LEFT JOIN users ON (films.Moderator=users.ID) WHERE films.ID=?d" . (count($wheres) ? " AND " . implode(' AND ', $wheres) . " " : ""); $film = $db->selectRow($sql, $user->getId(), $filmId); $result = array(); if ($film) { $film["popular"] = $film['hit'] > $hitThreshold ? true : false; $film["hide"] = $film['hide'] ? true : false; $film["international_name"] = htmlentities($film["international_name"], ENT_NOQUOTES, 'cp1252'); $film["genres"] = $db->selectCol('SELECT Name FROM filmgenres LEFT JOIN genres ON (genres.ID = filmgenres.GenreID) WHERE filmgenres.FilmID=?d', $filmId); $film["countries"] = $db->selectCol('SELECT Name FROM filmcountries LEFT JOIN countries ON (countries.ID = filmcountries.CountryID) WHERE filmcountries.FilmID=?d', $filmId); $rows = $db->select("SELECT persones.ID as person_id, persones.RusName as name, persones.OriginalName as international_name, persones.Images as old_photos, persones.Photos as photos, roles.Role as role, filmpersones.RoleExt as `character` FROM filmpersones LEFT JOIN roles ON (roles.ID = filmpersones.RoleID) LEFT JOIN persones ON (persones.ID = filmpersones.PersonID) WHERE filmpersones.FilmID=?d ORDER BY SortOrder, LENGTH(Images) DESC", $filmId); $persones = array(); foreach ($rows as $row) { $personId = $row['person_id']; if ($row["role"] == "режиссер") { $film['directors'][] = trim($row["name"]) ? $row["name"] : $row["international_name"]; } $persones[$personId]['person_id'] = $personId; $persones[$personId]['name'] = $row["name"]; $persones[$personId]['international_name'] = $row["international_name"]; $persones[$personId]['names'] = array_values(array_filter(array(trim($row["name"]), trim($row["international_name"])))); $photos = array_values(array_filter(array_merge(preg_split("/(\r\n|\r|\n)/", $row["photos"]), preg_split("/(\r\n|\r|\n)/", $row["old_photos"])))); $photo = array_shift($photos); if ($photo) { $photo = Lms_Application::thumbnail($photo, $width = 90, $height = 0, $defer = true); } $persones[$personId]['photo'] = $photo; $persones[$personId]['roles'][] = array("role" => $row["role"], "character" => $row["character"]); } $film['persones'] = array_values($persones); $covers = array_values(array_filter(array_merge(preg_split("/(\r\n|\r|\n)/", $film["big_posters"]), preg_split("/(\r\n|\r|\n)/", $film["poster"])))); $film["cover"] = array_shift($covers); if ($film["cover"]) { $film["cover"] = Lms_Application::thumbnail($film["cover"], $width = 200, $height = 0); } $film["frames"] = preg_split("/(\r\n|\r|\n)/", $film["frames"]); if ($film["frames"]) { //TODO: delete frame_width, frame_height list($width, $height) = getimagesize(dirname(APP_ROOT) . '/' . $film["frames"][0]); $film["frame_width"] = $width; $film["frame_height"] = $height; $film["small_frames"] = array(); foreach ($film["frames"] as $frame) { $film["small_frames"][] = Lms_Application::thumbnail($frame, $width = 225, $height); $film["small_frame_width"] = $width; $film["small_frame_height"] = $height; } } $film["comments_count"] = $db->selectCell("SELECT count(*) as count FROM comments WHERE FilmID=?d AND (ISNULL(ToUserID) OR ToUserID=0 {OR ToUserID=?d OR UserID=?d})", $filmId, $user->getId() ? $user->getId() : DBSIMPLE_SKIP, $user->getId() ? $user->getId() : DBSIMPLE_SKIP); $rows = $db->select("SELECT ID as file_id, Name as name, Path as path, Size as `size`, ed2kLink as ed2k_link, dcppLink as dcpp_link FROM files WHERE FilmID=?d ORDER BY Path", $filmId); $files = array(); foreach ($rows as $row) { $links = array(); if (Lms_Application::getConfig('download', 'license')) { $v = Lms_Application::getLeechProtectionCode(array($filmId, $row["file_id"], $user->getId())); $links['license'] = "pl.php?player=ftp&uid=" . $user->getId() . "&filmid={$filmId}&fileid=" . $row["file_id"] . "&v={$v}"; } else { $links['download'] = str_replace(Lms_Application::getConfig('source'), Lms_Application::getConfig('ftp'), $row['path']); if ($encoding = Lms_Application::getConfig('download', 'escape', 'encoding')) { $links['download'] = Lms_Translate::translate('CP1251', $encoding, $links['download']); } if (Lms_Application::getConfig('download', 'escape', 'enabled')) { $t = explode("/", $links['download']); for ($i = 3; $i < count($t); $i++) { $t[$i] = rawurlencode($t[$i]); } $links['download'] = implode("/", $t); } } if ($row['ed2k_link']) { $links['ed2k'] = $row['ed2k_link']; } if ($row['dcpp_link']) { $links['dcpp'] = $row['dcpp_link']; } $files[] = array('file_id' => $row['file_id'], 'name' => $row['name'], 'size' => $row['size'], 'links' => $links); } $film['files'] = $files; if (Lms_Application::getConfig('smb')) { $mode = $user->getMode(); if (Lms_Application::getConfig('modes', $mode, 'smb')) { $film['smb'] = 1; } } if ($film["group"]) { $films = $db->select("SELECT ID as film_id, Name as name, " . " OriginalName as international_name, " . " Year as year, " . " CONCAT(BigPosters, '\n', Poster) as `covers` " . "FROM films " . "WHERE `Group`=? AND ID!=?d {AND films.Hide=?d} " . "ORDER BY Year", $film["group"], $filmId, $user->isAllowed("film", "moderate") ? DBSIMPLE_SKIP : 0); Lms_Item_Film::postProcess($films, 90); $film['other_films'] = $films; } } else { $film = null; } $result['film'] = $film; return new Lms_Api_Response(200, null, $result); } catch (Exception $e) { return new Lms_Api_Response(500, $e->getMessage()); } }
private function getCompiledItem() { $compress = Lms_Application::getConfig('optimize', 'js_compress'); $filename = md5(serialize($this->_cache)); $path = self::$cacheDir . $filename . ($compress ? '_compressed' : '') . '.js'; if (!file_exists($path)) { Lms_Debug::debug("Combine javascripts to {$path}..."); Lms_FileSystem::createFolder(dirname($path), 0777, true); $jsContent = ''; foreach ($this->_cache as $js) { if (is_array($js)) { $jsContent .= file_get_contents($js['filepath']) . "\n\n"; Lms_Debug::debug($js['filepath'] . ' ... OK'); } else { $jsContent .= $js . "\n\n"; Lms_Debug::debug('Inline JavaScript ... OK'); } } if ($compress) { $jsContent = JSMin::minify($jsContent); } file_put_contents($path, $jsContent); } $url = str_replace($_SERVER['DOCUMENT_ROOT'], '', $path); $item = $this->createData('text/javascript', array('src' => $url)); return $item; }
private function getCompiledItem() { $compress = Lms_Application::getConfig('optimize', 'css_compress'); $filename = md5(serialize($this->_cache)); $path = self::$cacheDir . $filename . ($compress ? '_compressed' : '') . '.css'; if (!file_exists($path)) { Lms_Debug::debug("Combine css to {$path}..."); Lms_FileSystem::createFolder(dirname($path), 0777, true); $cssContent = ''; foreach ($this->_cache as $css) { $content = file_get_contents($css['filepath']); if ($compress) { $cssContent .= Minify_CSS::minify($content, array('prependRelativePath' => dirname($path), 'currentDir' => dirname($css['filepath']), 'symlinks' => Lms_Application::getConfig('symlinks'))); } else { $cssContent .= Minify_CSS_UriRewriter::rewrite($content, dirname($css['filepath']), $_SERVER['DOCUMENT_ROOT'], Lms_Application::getConfig('symlinks')); } $cssContent .= "\n\n"; Lms_Debug::debug($css['filepath'] . ' ... OK'); } file_put_contents($path, $cssContent); } $url = str_replace($_SERVER['DOCUMENT_ROOT'], '', $path); $item = $this->createDataStylesheet(array('href' => $url)); return $item; }
public static function getHttpClient() { if (!self::$_httpClient) { $httpOptions = Lms_Application::getConfig('http_client'); self::$_httpClient = new Zend_Http_Client(null, $httpOptions); } return self::$_httpClient; }