// check that we have access defined( '_VALID_MOS' ) or die( 'Restricted access' ); // register our event. It would be great of joomla had more events $_MAMBOTS->registerFunction( 'onPrepareContent', 'JoomSEO' ); function JoomSEO($published, &$row, &$params, $page=0) { global $database, $mainframe, $mosConfig_MetaKeys, $mosConfig_MetaDesc, $mosConfig_sitename; // perform a published check if (!$published) { return; } // get our bot parameters $query = "SELECT id FROM #__mambots WHERE element = 'JoomSEO' AND folder = 'content'"; $database->setQuery($query); $id = $database->loadResult(); // get our mambot object $mambot = new mosMambot($database); $mambot->load($id); $botParams = new mosParameters($mambot->params); // load all our vars //Title $titleLength = $botParams->get('titleLength', false); $titleOrder = $botParams->get('titleOrder', 1); $prependTitle = $botParams->get('prependTitle', false); $appendTitle = $botParams->get('appendTitle', false); // site name $showTitleSiteName = $botParams->get('showTitleSiteName', true); $overrideSiteName = $botParams->get('overrideSiteName', false); // content / heading title $showContentHeading = $botParams->get('showContentHeading', true); // paragraph $showFirstParagraph = $botParams->get('showFirstParagraph', false); $paragraphMinLength = $botParams->get('paragraphMinLength', 20); $paragraphLength = $botParams->get('paragraphLength', 50); // keywords $showTitleKeywords = $botParams->get('showTitleKeywords', true); $overrideTitleKeywords = $botParams->get('overrideTitleKeywords', false); $keywordMinCharacters = $botParams->get('keywordMinCharacters', 3); $titleKeywordQuantity = $botParams->get('titleKeywordQuantity', 5); // meta $metaKeywordsCount = $botParams->get('metaKeywordsCount', 50); $metaDescriptionMinLength = $botParams->get('metaDescriptionMinLength', 80); $metaDescriptionLength = $botParams->get('metaDescriptionLength', 150); // filter // when bot was first installed these were not being added unless bot was *saved* $defStickWords = ""; $stickyWords = $botParams->get('stickyWords', $defStickWords); $defBadWords = "0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z about an are as at be by com de en for from how in is it its la of on or that the this to was what when where who will with und the www and all has been your us up youll can if youve do know we not many you our but there they then more"; $badWords = $botParams->get('badWords', $defBadWords); $defBadCharacters = "0 1 2 3 4 5 6 7 8 9 > < & - , . ; : ) ( ? ! { } [ ] / ' " %"; $badCharacters = $botParams->get('badCharacters', $defBadCharacters); // bot activation $disableFrontpage = $botParams->get('disableFrontpage', false); // activation specific $disableFrontpageTitle = $botParams->get('disableFrontpageTitle', false); $disableFrontpageKeywords = $botParams->get('disableFrontpageKeywords', false); $disableFrontpageDescription = $botParams->get('disableFrontpageDescription', false); // front page overrides. Front page or corresponding item must be enabled though $overrideFrontPageTitle = $botParams->get('overrideFrontPageTitle', false); $overrideFrontPageKeywords = $botParams->get('overrideFrontPageKeywords', false); $overrideFrontPageDescription = $botParams->get('overrideFrontPageDescription', false); // SEO / Accessability // defaulted to false to as not to break existing templates $addHeadingTags = $botParams->get('addHeadingTags', false); // current settings $currentTitle = gettitle(); $currentContentHeading = $row->title; $currentMetaKeys = $mosConfig_MetaKeys; $currentMetaDesc = $mosConfig_MetaDesc; // added to limit sql queries $isFrontPage = IsFrontPage(); // firstly add our generator tag. // please leave this here as it will not affect seo // and gives my countless hours of programming an idea of use. global $beenHere; if (!$beenHere) { // add JoomSEO bot to Generator meta ReplaceMeta('Generator', ' JoomSEO by Phill Brown (http://www.joomseo.com).'); } // encompass our headings with hX tags // added first as we want this active even if the front page is disabled if ($addHeadingTags) { $row->title = AddHeadingTags($row->title, $addHeadingTags); } // check if we are enabled on the front page if (($isFrontPage) && ($disableFrontpage)) { // removed after added front page overrides and specific disabled attributes // were added after release 0.9 //if ($disabledFrontPageTitle) { // apply replacement text instead of joomla default // replacetitle($disabledFrontPageTitle); //} // exit from this bot return; } // clean and organise our text $text = PrepareText($row->text); // all CleanChars() no longer used as it was stopping other languages from operating proplerly //$text = CleanChars($text); $stickyWords = PrepareText($stickyWords); //$stickyWords = CleanChars($stickyWords); $badWords = PrepareText($badWords); //$badWords = CleanChars($badWords); $badCharacters = PrepareText($badCharacters); //$badCharacters = CleanChars($badCharacters); // clear existing meta keywords and descriptions $mosConfig_MetaKeys = ""; $mosConfig_MetaDesc = ""; // was thinking of adding later a check to use only first article or all articles // this get the total content from all articles from a com_frontpage global $botSefText; $botSefText .= $text; // get our site name // added to get the site title once global $newSiteName; //$newSiteName = null; if (!$newSiteName) { if ($showTitleSiteName) { $newSiteName = $mosConfig_sitename; if ($overrideSiteName) { $newSiteName = $overrideSiteName; } } } // get our content heading // added this to get first heading global $newContentHeading; //$newContentHeading = null; if (!$newContentHeading) { if ($showContentHeading) { $newContentHeading = $currentContentHeading; } } // get our first paragraph // added to get the paragraph once only global $newFirstParagraph; //$newFirstParagraph = null; if (!$newFirstParagraph) { if ($showFirstParagraph) { $newFirstParagraph = trim(GetDescription($botSefText, $paragraphMinLength, $paragraphLength)); } } // get our title keywords // no global as we need this to parse all keywords $newTitleKeywords = null; if ($showTitleKeywords) { $newTitleKeywords = GlueItems(GetKeywords($botSefText,$keywordMinCharacters,$titleKeywordQuantity,$stickyWords,$badWords,$badCharacters)); if ($overrideTitleKeywords) { $newTitleKeywords = GlueItems(GetKeywords($overrideTitleKeywords)); } } // sort our title $titleArray = array(); Push($titleArray, $prependTitle); switch ($titleOrder) { case 1:// Push($titleArray, $newSiteName); if ($newContentHeading != null) { Push($titleArray, ($newFirstParagraph) ? $newContentHeading ." - ". $newFirstParagraph : $newContentHeading); } else { Push($titleArray, $newFirstParagraph); } Push($titleArray, $newTitleKeywords); break; case 2:// Push($titleArray, $newSiteName); Push($titleArray, $newTitleKeywords); if ($newContentHeading != null) { Push($titleArray, ($newFirstParagraph) ? $newContentHeading ." - ". $newFirstParagraph : $newContentHeading); } else { Push($titleArray, $newFirstParagraph); } break; case 3:// if ($newContentHeading != null) { Push($titleArray, ($newFirstParagraph) ? $newContentHeading ." - ". $newFirstParagraph : $newContentHeading); } else { Push($titleArray, $newFirstParagraph); } Push($titleArray, $newSiteName); Push($titleArray, $newTitleKeywords); break; case 4:// if ($newContentHeading != null) { Push($titleArray, ($newFirstParagraph) ? $newContentHeading ." - ". $newFirstParagraph : $newContentHeading); } else { Push($titleArray, $newFirstParagraph); } Push($titleArray, $newTitleKeywords); Push($titleArray, $newSiteName); break; case 5:// Push($titleArray, $newTitleKeywords); Push($titleArray, $newSiteName); if ($newContentHeading != null) { Push($titleArray, ($newFirstParagraph) ? $newContentHeading ." - ". $newFirstParagraph : $newContentHeading); } else { Push($titleArray, $newFirstParagraph); } break; case 6:// Push($titleArray, $newTitleKeywords); if ($newContentHeading != null) { Push($titleArray, ($newFirstParagraph) ? $newContentHeading ." - ". $newFirstParagraph : $newContentHeading); } else { Push($titleArray, $newFirstParagraph); } Push($titleArray, $newSiteName); break; } Push($titleArray, $appendTitle); if ($titleLength) { $newTitle = substr(implode(' | ', $titleArray),0,$titleLength); } else { $newTitle = implode(' | ', $titleArray); } // its the front page so do front page specific handling if ($isFrontPage) { // get our frontpage title if ($disableFrontpageTitle) { // use the joomla generated title $newTitle = $currentTitle; } else { $newTitle = ($overrideFrontPageTitle) ? $overrideFrontPageTitle : $newTitle; } // get our frontpage keywords if ($disableFrontpageKeywords) { // use the joomla default $metaKeywords = $currentMetaKeys; } else { $metaKeywords = ($overrideFrontPageKeywords) ? $overrideFrontPageKeywords : GlueItems(GetKeywords($botSefText,$keywordMinCharacters,$metaKeywordsCount,$stickyWords,$badWords,$badCharacters)); } // get our frontpage description if ($disableFrontpageDescription) { // use the joomla default $metaDescription = $currentMetaDesc; } else { $metaDescription = ($overrideFrontPageDescription) ? $overrideFrontPageDescription : GetDescription($botSefText, $metaDescriptionMinLength, $metaDescriptionLength); } } else { // we are on any other page so perform normal operations $metaKeywords = GlueItems(GetKeywords($botSefText,$keywordMinCharacters,$metaKeywordsCount,$stickyWords,$badWords,$badCharacters)); $metaDescription = GetDescription($botSefText, $metaDescriptionMinLength, $metaDescriptionLength); } replacetitle($newTitle); ReplaceMeta('keywords', $metaKeywords); ReplaceMeta('description', $metaDescription); // set our been here status $beenHere = true; } /** * Add an item to our array * * @param array $stack * @param text $var */ function Push(&$stack, $var) { if ($var) { array_push($stack, $var); } } /** * Add H1, H2, H3... tags to text * * @param string $title * @param int $num * @return string */ function AddHeadingTags($title, $num) { return "$title"; } /** * Checks if current page is Joomla front page * * @return unknown */ function IsFrontPage() { global $database; global $Itemid; // if we have no option then we should have arrived at the front page of the site. // sef url mapping bypasses this but is caught below if (mosGetParam($_GET,'option','') == '') { return true; } // get the first menu item in mainmenu as this is the front page in joomla $query = "SELECT * from #__menu WHERE menutype = 'mainmenu' AND published = '1' ORDER BY ordering LIMIT 1"; $database->setQuery($query); $row = null; $database->loadObject($row); if ($Itemid == $row->id) { return true; } return false; } /** * Replaces current Joomla meta tag * code based from joomla.php * * @param string $name * @param string $content */ function ReplaceMeta($name, $content) { global $mainframe; $name = trim(htmlspecialchars($name)); $n = count($mainframe->_head['meta']); for ($i = 0; $i < $n; $i++) { if ($mainframe->_head['meta'][$i][0] == $name) { $content = trim(htmlspecialchars($content)); if ($content) { $mainframe->_head['meta'][$i][1] = $content; } return; } } $mainframe->addMetaTag($name, $content); } /** * Get current meta content * code based from joomla.php * * @param string $name * @return string */ function GetMeta($name) { global $mainframe; $name = trim(htmlspecialchars($name)); $n = count($mainframe->_head['meta']); for ($i = 0; $i < $n; $i++) { if ($mainframe->_head['meta'][$i][0] == $name) { return $mainframe->_head['meta'][$i][1]; } } } /** * Get a string of formatted keywords * * @param array key=>value $items * @return string */ function GlueItems($items) { // as format is in a $key=>$value pair extract the keys $keys = array_keys($items); // glue our array into a single string $ret = implode(', ', $keys); return $ret; } /** * Replace current title * * @param string $content */ function replacetitle($content) { global $mainframe; $mainframe->_head['title'] = $content; } /** * Append to current title * * @param string $content */ function appendtitle($content) { global $mainframe; $mainframe->_head['title'] .= $content; } /** * Get the current title * * @return string */ function gettitle() { global $mainframe; return $mainframe->_head['title']; } /** * Gets the description for the meta description tag * uses the sentence inside $minLength and $maxLength * or sentence... if sentence is bigger than $maxLength * * @param string $text * @param int $minLength * @param int $maxLength * @return string */ function GetDescription($text, $minLength = 100, $maxLength = 250) { if ($minLength > $maxLength) return; if (!$text) return; // previously sentences including 'Joomla 1.0' was stopping at "Joomla 1." therefor the philosophy has changed here. // we want a minumim of $minLength chars and a max of $maxLength chars, stopping at a sentence inbetween. // get pos of '.' $stop = strpos($text,'.'); if (($stop >= $minLength) && ($stop <= $maxLength)) { // display the full sentence as it is $desc = trim(substr($text,0,$stop + 1)); } else { // display the sentence cut short $desc = trim(substr($text, 0, $maxLength -3))."..."; } return ucfirst($desc); } /** * Returns an array of keywords * * @param string $text * @param int $keywordMinCharacters * @param int $top * @param string $stickyWords * @param string $badWords * @param string $badCharacters * @param bool $capitalise * @param char $delim * @return array key=>value */ function GetKeywords($text, $keywordMinCharacters = 1, $top = 0, $stickyWords = null, $badWords = null, $badCharacters = null, $capitalise = true, $delim=" ") { $text = strtolower($text); // remove any email addresses $regex = '/(([_A-Za-z0-9-]+)(\\.[_A-Za-z0-9-]+)*@([A-Za-z0-9-]+)(\\.[A-Za-z0-9-]+)*)/iex'; $replacement = ' '; $text = preg_replace($regex, $replacement, $text); // remove and unwanted characters $badCharacters = explode($delim, $badCharacters); foreach ($badCharacters as $badChar) { $text = str_replace ($badChar, null, $text); } // remove any unwanted words $badWords = explode($delim,$badWords); $firstWord = substr($text, 0, (strpos($text, " ")) +1); $lastWord = substr($text , strrpos($text, " ")); foreach ($badWords as $badWord) { // remove all instances at the beginning if (strcasecmp("$badWord ",$firstWord) == 0) { $text = substr($text, strlen($firstWord)); } // remove all instances in the middle $text = Replace(" $badWord ", " ", $text); // remove all instances at the end if (strcasecmp(" $badWord", $lastWord) == 0) { $text = substr($text, 0, strlen($text) - strlen($lastWord)); } } // capitalise our text if ($capitalise == true) { $text = ucwords($text); $stickyWords = ucwords($stickyWords); } $wordCount = array(); // add our stickywords $stickyWords = explode($delim,$stickyWords); foreach ($stickyWords as $stickyWord) { $wordCount[$stickyWord]=1; } // loop through all our words and count instances $words = explode($delim,$text); foreach ($words as $word) { $word = trim($word); // after all checking was still getting null chars from somewhere if (($word != null) && (strlen($word) >= $keywordMinCharacters)) { // check that word already has been added if (array_key_exists($word,$wordCount)) { // it does so add to our count $wordCount[$word] += 1; } else { // it doesnt so put it in once $wordCount[$word] = 1; } } } // sort the new word array @arsort($wordCount); $ret = array(); // return all elements if ($top == 0) { return $wordCount; } // return the top X number of elements if ($top < count($wordCount)) { $ret = array_slice($wordCount, 0, $top); } else { $ret = $wordCount; } //foreach ($wordCount as $key=>$val) { // echo "Key: $key Value: $val
"; //} return $ret; } /** * Clean and prepare text, remove any unwanted tags etc * * @param string $text * @return string */ function PrepareText($text) { // removed as redundant from strip_tags // and was causing parsing problems due to incorrect regex. // regex is fixed for the sake of being fixed. // convert html br to space /*$regex = '/()/i';*/ //$text = preg_replace($regex, " ", $text); // remove links /*$regex = '/()(.*?)(<\/a>)/i';*/ //$text = preg_replace($regex, " $2 ", $text); // convert html entities to chars $text = html_entity_decode($text, ENT_QUOTES); // strip any remaining html tags $text = strip_tags($text); // remove any mambot codes $regex = '(\{.*?\})'; $text = preg_replace($regex, " ", $text); // convert tabs to spaces // added below //$text = str_replace("\t", " ",$text); // convert newlines and tabs to spaces $text = str_replace(array("\r\n", "\r", "\n", "\t"), " ", $text); // remove any extra spaces while (strchr($text," ")) { $text = str_replace(" ", " ",$text); } // general sentence tidyup for ($cnt = 1; $cnt < strlen($text); $cnt++) { // add a space after any full stops or comma's for readability // added as strip_tags was often leaving no spaces if (($text{$cnt} == '.') || ($text{$cnt} == ',')) { if (isset($text{$cnt+1})) { if ($text{$cnt+1} != ' ') { $text = substr_replace($text, ' ', $cnt + 1, 0); } } } } return trim($text); } /** * Removes any non readable characters * * @param string $text * @return string */ function CleanChars($text) { for ($cnt=0; $cnt < strlen($text); $cnt++) { $chr = $text{$cnt}; $ord = ord($chr); if ($ord < 32 or $ord > 126) { $chr = " "; $text{$cnt} = $chr; } } return $text; } /** * Case insensitive replace * * @param string $search * @param string $replace * @param string $subject * @return string */ function Replace($search, $replace, $subject, $word = false) { if ($word) { $regex = "/\b$search\b/i"; } else { $regex = "/$search/i"; } return preg_replace($regex, $replace, $subject); } ?>
Восемь способов не думать о сексе
Автор Administrator   
16.12.2008 г.

Восемь способов не думать о сексеЕсли верить доморощенным психологам, мужчины думают о сексе каждые пять минут. Женщин "неприличные" мысли посещают в два раза реже. Кого-то такая зацикленность вполне устраивает, а кому-то мешает жить.

Последние всеми правдами и неправдами стараются перехитрить природу и иногда даже в этом преуспевают.

Кому это надо?
В первую очередь на ум приходят не так давно привлекшие внимание медиа адепты движения антисексуалов. Те самые чудаковатые товарищи, которые с пеной у рта доказывают, что секс вреден, растрачивает энергию и здоровье. Однако ими дело не ограничивается.

Мысли о сексе мешают военным, отправляющиеся в поход; молодым послушникам, уходящим в монастырь; влюбленным парам, которые (так бывает) разлучены на некоторый срок.

Ну что, брат Пушкин?
Однажды А.С. Пушкина отправили в ссылку в имение Болдино. Он не мог видеться с Натальей Гончаровой в течение нескольких осенних месяцев.
В результате появился один из лучших циклов его произведений, а сам период назван Болдинской осенью.

Спортсмены, писатели и ученые стараются забыть о сексе для достижения довольно прагматических целей - выиграть соревнования, написать книгу или доказать теорему Пуанкаре. Это классический случай сублимации - вытеснение
сексуальных желаний и перевод энергии в творческое русло. По теории Фрейда самим своим существованием человеческая культура обязана сублимации.

И, наконец, многие верующие-миряне добровольно гонят мысли о сексе на значительный срок, в православии, например, таким временем является Великий пост.

Как отвлечься от мыслей о сексе

Способ 1. Сесть на диету
Считается, что строгая диета способствует снижению выработки половых гормонов. Чем меньше калорий в пище, тем слабее либидо. Заметно меньше мыслей о сексе становится при снижении калорийности пищи на 40% от обычного.

Особое внимание следует обратить на то, чтобы в пище не было, так называемых, афродизиаков: специй (перца, корицы, имбиря, гвоздики, базилика и т.п.), орехов, грибов, яиц, морепродуктов, мяса, рыбы, оливок, меда, шоколада. И самое главное, полностью откажитесь от алкоголя!

Способ 2. Нагрузить мышцы
Помните героя Адриано Челентано в фильме "Укрощение строптивого" - закоренелого холостяка и женоненавистника, который всякий раз, когда видел красавицу, отправлялся неистово колоть дрова? Тяжелый физический труд вполне может поддержать борьбу духа с плотью.

Если в нужный момент под рукой топора не оказалось, можно нагрузить мышцы в тренажерном зале или просто поприседать или поотжиматься от пола. Сто раз.

Способ 3. Заняться умерщвлением плоти
"Святые подвижники благочестия всеми силами и чрезвычайно строгостью хранили телесную чистоту, не останавливаясь перед самыми героическими мерами...". Умерщвление плоти исторически было одним из самых действенных способов бороться с плотскими искушениями.

Добровольное самобичевание и ношение повязки с шипами монахом-альбиносом из фильма "Код Да Винчи" - не художественное преувеличение. Например, преподобный Венедикт Нурсийский (основатель западного монашеского ордена бенедиктинцев) бросался в колючий терновник всякий раз, когда его охватывало страстное возбуждение.

Однако менее радикальные старцы советуют все же начинать с холодных омовений или лежания на холодном голом полу, пока не пройдет вспышка страсти.

Способ 4. Принимать лекарственные препараты
Ходят байки, что еще полвека назад солдатам в пищу подсыпали бром, чтобы мысли сексуального

характера в голову не лезли. Снижать либидо могут и другие лекарства: нейролептики, антидепрессанты, транквилизаторы, бета-блокаторы, мочегонные, некоторые сердечно-сосудистые, гормональные и седативные средства.

Впрочем, основное действие этих препаратов к сексу не имеет никакого отношения. Принимать их без назначения врача небезопасно!

Способ 5. Заняться экстримом
Сопутствующий ему гормон адреналин может вызывать что угодно, но только не эрекцию. Можно заняться контактными боевыми искусствами (тайский бокс, карате и т.п.) или экстремальными видами спорта (каякинг, парапланеризм, альпинизм, дайвинг и т.п.), можно поехать воевать в горячую точку, а можно обрить голову и вступить в банду скинхедов или клуб футбольных фанатов. Кстати, знающие люди говорят, что хорошая драка лучше хорошего секса.

Не случайно перед Великим постом (в который полагается воздержание) на Руси обязательно проходили кулачные бои "стенка на стенку".

Способ 6. Молиться
Этот совет с Интернет-странички Православной матери.

"Если чувствуете, наконец, что силы вам изменяют, и грех готов победить, остается еще великое средство - молитва. Там, где не хватает человеческих сил, там есть надежда на помощь Божию. Господь силен спасти и на краю бездны. Особенно в те минуты, когда охватывает страстное возбуждение и дурные мысли полезут в голову, необходимо прибегать к молитве. Удобнее всего в таких случаях краткая, но настойчиво повторяемая молитва: "Господи, помилуй!".

Способ 7. Отвлечься
Несмотря на то, что ученые утверждают, что трудоголики - фантастические любовники, что-то не верится. По крайней мере, спонтанные мысли о сексе у человека, работающего по 12-14 часов в день, особенно, если речь идет о труде умственном, - что-то из области ненаучной фантастики.

Отвлекаться от секса можно не только работой. Есть еще книги, кроссворды и компьютерные игры. Последние хороши еще и тем, что пожирают массу свободного времени. Особое внимание стоит обратить на нескончаемые эпопеи типа "Линэйдж-2", в которые в он-лайне играют днями и ночами многие тысячи человек.

Способ 8. Сделать секс работой. Способ из области гомеопатии - "подобное лечится подобным".
Режиссер порнофильмов. Если день за днем наблюдать за спаривающимися людьми, да еще и контролировать процесс, секс начинает казаться скучным, неинтересным и примитивным. Обычно на это уходит не больше года-двух.

Актеры порнофильмов. Какие спонтанные мысли о сексе, если секс из удовольствия превратился в рутину?

Мальчики (девочки) по вызову. Помните бородатый анекдот про проститутку?

К загорающей на пляже проститутке клеится мужчина: "Девушка, не желаете поразвлечься?" - "Нет". "Почему?" - "Представьте, что вы токарь и вкалываете на заводе. И вот вы едете в отпуск к морю. Выходите на пляж, а там - станки... станки... станки...".

Имейте ввиду, речь идет именно о профессиональной деятельности, съемка домашнего порно отношения к ней не имеет!wowasite.info
Последнее обновление ( 16.12.2008 г. )