домой  почта (495) 543-35-35 (многоканальный) http://tour.yandis.ru/
e-mail: tour@yandis.ru
     Болгария
     Турция
     Египет
     Тунис
     Италия
     Хорватия
    Сочи
    Анапа
    Геленджик
    Евпатория
 
О компании Туры по Миру Туры по России Шоп-Туры Загранпаспорт и виза Контакты
 
  ТУНИС  

Отдых в Тунисе
Спрака о стране  
Полезная информация  
Интересные факты  
История  
Города туниса  
Курорты туниса  
Особенности отелей  
Экскурсии  
Национальная кухня  
Шопинг  
Талассотерапия  
история

  

 
   

ДОИСТОРИЧЕСКИЙ ПЕРИОД

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

Ученые считают, что в доисторические времена берберский народ представлял собой многочисленные и воинственные племена скотоводов, кочевавшие по Северу Африки, которая являлась тогда гораздо менее засушливым и более пригодным для кочевого скотоводства местом.

От кочевых культур обычно остается мало материальных свидетельств, но насколько могут судить историки, древние берберы имели некое подобие государства, скорее всего, в форме племенного союза, и контролировали достаточно большие территории. Это косвенно подтверждается дошедшими до нас легендами о контактах местного населения с финикийцами и об основании финикийцами города Карфагена. Если отделить реальные факты от легенды, то суть в следующем: земли Севера Африки находились под властью сильных и могущественных берберских правителей, и чужеземцам-финикийцам только благодаря хитрости и щедрым дарам удалось закрепиться на территории современного Туниса и основать свои колонии на побережье. Первыми финикийскими колониями предположительно были города Утика в дельте реки Меджерды и Гадруметум (нынешний город Сусс).


КАРФАГЕНСКИЙ ПЕРИОД

Самой известной финикийской колонией стал город Карфаген, основанный, согласно легендарной традиции, в 814 году до нашей эры. Название "Карфаген" предположительно восходит к финикийскому "Карт Хадешт" - "новый город".

Основание Карфагена связано с именем финикийской принцессы Элиссы (или Дидо), с которой была связана любопытная история:

В то время Финикия была огромной империей непревзойденных торговцев-мореплавателей, которые поддерживали контакты со всеми известными тогда цивилизациями и основывали города-фактории не только по всему Средиземноморью, но и далеко за его пределами. Так, следы древних финикийских поселений обнаружены в Ирландии и Великобритании (!). Центром финикийской империи являлся город Тир, откуда и была родом принцесса Элисса. После смерти отца, финикийского правителя, Элисса вступила в борьбу за трон со своим родным братом Пигмалионом, однако потерпела поражение и была вынуждена вместе со своими приверженцами бежать.

Единственным выходом для беглецов было основать собственный город. Удобная бухта была найдена на севере Африки. По легенде, Элисса, женщина мудрая и хитрая, вступила в переговоры с правителем местного многочисленного племени. Аборигены наотрез отказывались продать чужеземцам хотя бы ничтожную часть земли, и тогда Элисса прибегла к уловке. Она предложила сказочные сокровища за "клочок земли, не больше того, который покроет шкура быка". Местные жители поддались соблазну и согласились. После того, как сделка была совершена, Элисса разрезала шкуру быка на тонкие полосы, связала их вместе и получившимся длинным кожаным ремнем наметила границы своих владений. Таким образом, не нарушая условий договора, она ухитрилась приобрести весьма внушительную территорию. Так был основан Карфаген.

Финикийцы были весьма искусны в сооружении портов и гаваней, которые повсеместно устраивались по одному удобному образцу. Описания финикийских портов можно найти у многих древнегреческих историков. Чтобы войти в гавань со стороны моря, необходимо было пройти через длинный канал шириной около 20 метров, миновав внушительные защитные сооружения. Вход в канал при необходимости мог блокироваться железными цепями. Порт был разделен на военную и торговую акватории. Торговая часть представляла собой просторную круглую акваторию с устроенными на берегу складами. В центре акватории находился искусственный остров, на котором располагалось портовое и таможенное начальство, которое легко контролировало все происходившее в порту. Очертания древнего карфагенского порта до сих пор легко угадываются, если вы будете осматривать побережье с высоты в районе развалин Карфагена.

Поддерживая хорошие отношения с окружающими племенами, активно участвуя в финикийской торговле, Карфаген, благодаря своему выгодному географическому положению, постепенно стал превращаться в главное звено в цепочке средиземноморских городов-колоний. К VI веку до нашей эры центр политической и финансовой власти Финикии стал постепенно перемещаться из Тира в Карфаген. После падения Тира, захваченного в 332 году до нашей эры Александром Македонским, Карфаген по сути дела стал новым центром того, что осталось от финикийской империи.

В V веке до нашей эры интересы Карфагена стали вступать в противоречие с греческими. Греки в это время вели активную политику колонизации западных территорий Средиземноморья, которые финикийцы считали свой вотчиной. Ареной главного столкновения стал остров Сицилия. Карфагену на протяжении всей его истории фатально не везло в сухопутных сражениях. Первые на море, на суше они воевать они никогда не умели и всегда полагались на наемное войско. В битве при Химере в 480 году до нашей эры греки нанесли серьезное поражение армии финикийских наемников, в результате которого греки овладели восточной Сицилией с городом Сиракузы, а за Карфагеном остался лишь контроль за западной Сицилией. Затем, в 396 году греки укрепили свое положение, победив еще в одном крупном сражении на Сицилии. В 310 году до нашей эры Карфаген высадил на острове большую армию, но правитель греческого города на Сицилии Агастокл совершил ловкий стратегический маневр: оставив в своем городе небольшой гарнизон, он перебросил свою армию в Африку, на полуостров Кап Бон (одна из провинций современного Туниса) и в течении трех лет разорял земли противника. Это был, пожалуй, последний удар, нанесенный греками Карфагену. История противостояния Греции и Карфагена - прекрасный пример того, как проиграв почти все серьезные сражения, можно выиграть войну. Молодой агрессивный Рим положил конец греческому влиянию в Средиземноморье, разрушив греческие колонии в Италии и на Сицилии. Карфагену оставалось только заполнить образовавшийся после ухода греков вакуум. Однако, столкновение с Римом тоже становилось неизбежным.

В смысле политического устройства, Карфаген представлял собой теократическую олигархию, в которой наиболее богатые граждане и жрецы выбирали правителя. В дальнейшем государство эволюционировало до подобия республики, где народное собрание выбирало двух правителей-"суфетов", которые в течении года управляли государственными делами. Карфагеняне были весьма религиозным народом, поклонявшимся божествам финикийского происхождения с сильным влиянием древнеегипетских и древне-вавилонских культов. Их пантеон был таков: Баал-Амун, Танит, Астарт, Мелькиар, Эшмун. Судя по всему, будучи расой торговцев и путешественников, карфагеняне легко заимствовали чужеземные верования, часто ассоциируя собственные божества с божествами иноплеменников и копируя иноземные ритуалы. В то же время, многие древние историки упоминали в своих трудах якобы практиковавшиеся в Карфагене и Финикии кровавых человеческих жертвах, приносимых богу Баалу. Некоторые современные ученые склонны списывать подобные упоминания на "римскую пропаганду" времен столкновения римлян и карфагенян, целью которой было очернить политического противника.

В III веке до нашей эры, владея почти всей Сицилией и контролируя Мессинский пролив, Карфаген представлял собой серьезную угрозу для римской торговли и мореплавания. Карфаген царствовал на море, имея первый в мире военный флот и обширные заморские владения в западной Африке, в Египте, Испании.

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

Первая пуническая война - 264-241 годы до нашей эры. Первая пуническая война явилась чередой преимущественно морских сражений, главным образов вокруг Сицилии. Римские триеры не могли соперничать с карфагенскими судами в маневренности и вооружении, поэтому римляне на первом этапе несли серьезные поражения. Затем они стали использовать новые методы ведения сражения и новое вооружение: так называемый "ворон", тараны и абордажные методы, привнеся на флот приемы сухопутной войны. Благодаря этому, они добились успехов и на море.

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

Благодаря неимоверным усилиям, римляне добились победы в первой пунической войне и навязали мир на своих собственных условиях: флот Карфагена был сокращен, Сицилия передана Риму, разделены сферы влияния в Испании.

Вторая пуническая война - 218-201 годы до нашей эры - началась, по сути дела, в Испании, где издавна существовала карфагенская колония. Колонизация Испании с ее воинственными местными племенами требовала недюжинных полководческих талантов и энергии. Недаром именно здесь сформировалась карфагенская "партия войны" - те представители карфагенской аристократии, которые не видели себя вне военного поприща, именно здесь находили применение своим талантам. Полководец Гамилькар из аристократического рода Барка прославился своими победами в Иберии. Благодаря ему "партия баркидов" была весьма влиятельной в карфагенском народном собрании. Сын Гамилькара - Ганнибал - не мог ограничиться походами в пределах Испании, он стал готовиться к походу на Рим. В 218 году до нашей эры он использовал формальный повод и напал на союзников Рима, чем спровоцировал новую войну. Легендарный поход Ганнибала описывается во всех школьных учебниках. Его армия, перейдя вместе с боевыми слонами через Альпы, обрушилась на римлян с самой неожиданной стороны, и нанесла серию сокрушительных поражений: при Тразимене, при Каннах. Основной ударной силой в армии Ганнибала была нумидийская конница, которой в то время не было равных (Нумидия - южные районы нынешнего Туниса, которые были населены племенами, родственными современным берберам). Римские источники сообщают, что нумидийцы ездили на своих лошадях без седла и какой-либо сбруи, подавая команды голосом.

После нескольких поражений римляне были полностью деморализованы, путь на Рим открыт. Историки до сих пор гадают, почему Ганнибал не воспользовался моментом и не взял Рим, а направился вместо этого в южные области Италии, в Кампанию. Разгадку, скорее всего, следует искать состоянии армии Ганнибала. Сложнейшие переходы и кровопролитные сражения сделали свое дело: карфагенские ветераны, пришедшие с Ганнибалом из Испании, были в его армии в меньшинстве, большую же часть составляли воины из примкнувших к карфагенянам местных племен, которые давно пытались освободиться от римского владычества. Кроме того, родной Карфаген, по сути дела, отказал Ганнибалу в поддержке: несмотря на победы, Ганнибала обвиняли в том, что он развязал войну, которая может погубить Карфаген как государство. Верх в народном собрании взяли осторожные и благоразумные представители торговой аристократии, а "партия войны" стала терять влияние. По сути дела, Ганнибал в Италии оказался политически изолированным от своей родины. На протяжении долгих 16 лет Ганнибал вел успешную кампанию на территории Италии, наводя ужас на римлян. Римляне отказались от тактики генеральных сражений с Ганнибалом и избегали прямых столкновений, изнуряя противника в мелких стычках. Ганнибал направлял в Карфаген богатые трофеи, но подкрепления получал очень мало. В этой затянувшейся, хотя и успешно складывающейся для Карфагена кампании, "партия мира" в карфагенском народном собрании победила - карфагеняне искали мира с Римом и даже объявили Ганнибала "врагом нации", самовольно развязавшим войну. Не имея возможности справиться с Ганнибалом в Италии, римляне нашли единственный способ - высадить несколько своих легионов в Африке, чтобы создать прямую угрозу Карфагену. Командовал римской армией полководец Сципион, который помимо военного, имел еще большой политический талант. Сципиону удалось посулами и подарками склонить к предательству предводителя нумидов - Масиниссу, который выступил на стороне римлян. Ганнибал был настоящим патриотом Карфагена, поэтому даже несмотря на то, что его объявили на родине "врагом нации", закончил итальянскую компанию и переправился со своей небольшой армией домой. Он не мог высадиться в самом Карфагене, где был бы немедленно арестован, а остановился в городе Лептис, где стал собирать ополчение.

Вскоре Сципион навязал Ганнибалу сражение при местечке Зама, в котором карфагеняне были наголову разбиты.

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

Вторая пуническая война кончилась для Карфагена миром на позорных условиях: Карфаген обязался выдать Риму свой военный флот и воздержаться от обучения боевых слонов. По сути дела, влиянию Карфагена был положен конец.

Третья пуническая война - 149-146 годы до нашей эры. Эта война была спровоцирована Римом. За полвека с окончания предыдущей войны в римском Сенате восторжествовала партия "ястребов". Чего стоил только сенатор Катон старший, которому принадлежали ставшие крылатыми слова: "Карфаген должен быть разрушен", которыми он заканчивал любую свою публичную речь.

Эта война была самой короткой из пунических, потому что Карфаген не мог оказать сколько-нибудь серьезного сопротивления. Она закончилась апокалиптическим разрушением Карфагена: римляне не только не оставили камня на камне в городе, но даже засыпали место, на котором он стоял, солью, чтобы и впредь эта земля была голой и бесплодной.

От карфагенского периода истории осталось очень мало материальных свидетельств. Пунические захоронения при раскопках тоже дают не очень много исторического материала. В 1921 году благодаря случайной находке археолога-любителя, обнаружившего каменную стелу, специалистам удалось определить точное местоположение развалин самого большого карфагенского храма - Саламмбо, посвященного богине Танит и богу Баалу.

Благодаря ежегодным археологическим экспедициям и раскопкам в районе Карфагена по крупицам удается собрать и воссоздать облик этой древней цивилизации. Современный Карфаген - это респектабельный пригород Туниса. Здесь находится президентский дворец и живут наиболее состоятельные жители.


РИМСКИЙ ПЕРИОД

После разрушения Карфагена Северная Африка была объявлена римской провинцией и превратилась в "житницу Рима". Провинцией управлял римский консул, назначаемый Сенатом.

На месте, где стоял Карфаген долгое время (почти полтора столетия) было запрещено что-либо строить.

Однако римляне не полностью отказались от карфагенского наследия. Например, они очень многое заимствовали из карфагенской агрономии, которую по уровню развития вполне можно сравнить даже с современной нам. Соратник Ганнибала - Магон, который был не только полководцем, но и прекрасным агрономом, суммировал в конце III века до нашей эры знания карфагенян в этой области в одном объемном трактате. Уже после разрушения Карфагена, в 146 году до нашей эры, римский Сенат распорядился перевести этот трактат и использовать содержащиеся в нем сведения повсеместно в Римском государстве. И сейчас одно из лучших тунисских вин называется в честь древнего ученого "Магон".

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

Римляне не смогли ужиться со своенравными нумидийцами, которые во время последней пунической войны оказали своим предательством огромную услугу Риму. В 112 году нумидийский царь Югурта (Джугурта) напал на римский гарнизон в городе Кирта и Сенат вынужден был направить в Африку дополнительные войска. Борьба с нумидийцами продолжалась довольно долго.

Настоящая колонизация римлянами Африки, по сути дела началась только в середине I века до нашей эры, когда на всем африканском побережье от нынешней Ливии до Марокко стали возникать римские поселения и города. Символом этой колонизации стало в 44 году до нашей эры повторное основание города Карфаген.

Экономическое развитие провинции Африка было феноменальным по своей быстроте и эффективности: заселялись и возделывались новые земли, проводились дороги, обустраивались города. Римские ветераны получали в Африке большие наделы. Такое бурное развитие можно объяснить тем, что Северная Африка была самой спокойной провинцией Рима. В то время, как только одна небольшая часть завоеванной Франции требовала присутствия 4 римских легионов (по 6 тыс. человек в каждой), во всей Африке римляне держали всего один легион.

К I веку нашей эры территории, которые ранее занимал Карфаген, давали Риму 2/3 требуемого ему зерна (оставшуюся 1/3 поставлял Египет).

Постепенно влияние провинции росло и во внутриримских делах. К 200 году каждый пятый римский сенатор был африканского происхождения.


ПЕРИОД ПРАВЛЕНИЯ ВАНДАЛОВ

Одним из самых серьезных противников Римской империи накануне крушения были вандалы - племя германского происхождения, добравшееся до Африки через Испанию в 439 году.

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

Вандалы надолго осели на землях северного Туниса, нещадно эксплуатируя местное берберское население и пользуясь тем, что досталось им от этой некогда богатейшей римской провинции. После смерти короля вандалов Гензерика в 477 году последовала череда слабых правителей, которые даже не пытались вести каких-либо завоевательных походов. Почти вековое господство вандалов закончилось в 533 году с приходом византийцев.


ВИЗАНТИЙСКИЙ И ПОСЛЕДУЮЩИЕ ПЕРИОДЫ

В начале VI века Восточная римская империя (Византия) попыталась подчинить себе территории, ставшие "бесхозными" после падения Западной римской империи. Частью этой кампании был поход византийского полководца Велизария во время правления императора Юстиниана. Велизарий со своим небольшим войском добрался до Сицилии, где попытался сыграть на вражде укрепившихся там ост-готов к соседям-вандалам и поставить их под свои знамена. Эта попытка не удалась и Велизарию пришлось действовать в одиночку. Но, как оказалось, такие предосторожности оказались абсолютно лишним, поскольку вандалы были настолько ослаблены, что не могли препятствовать высадке византийцев в Тунисе и оказать серьезное сопротивление.

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

Поэтому в 647 году Тунис стал легкой добычей для арабских завоевателей, которые на долгие века укрепили здесь свое господство. Затем последовал период оттоманского владычества (1574 - 1881), который уже в наше время закончился французским протекторатом (1881 - 1956).


Информация, взятая с http://tour.yandis.ru/ ссылка на наш сайт обязательна.

Горящие путевки
Турфирма Яндис
 
Список городов Туниса.
  название города    
Магдия    
Монастир    
Сусс    
Хаммамет    



Документы и информация, необходимые для регистрации ООО

Документы и информация, необходимые для регистрации ООО

Документ от учредителей - физических лиц:

* Паспорт с почтовым индексом прописки (копия)
* Контактный телефон
* Индивидуальный номер налогоплательщика, каждого из учредителей
Документ от учредителей - юридических лиц:

* Свидетельство о государственной регистрации ооо (копия заверенная нотариально)
* Выписка ЕГРЮЛ
* Устав (копия заверенная нотариально)
* Учредительного договора (копия заверенная нотариально)
* ФИО руководителя
* Банковские реквизиты
*Свидетельство о постановке на учет в налоговом органе (копия заверенная нотариально)
* Документы на адрес местонахождения организации (нотариально заверенная копия)
* Размер вклада в уставный капитал
* Состав учредителей с распределением между ними долей уставного капитала
* Размер и форма оплаты уставного капитала (деньги, имущество)
* Какую система налогообложения
* Основные виды деятельности предприятия
* Копия паспорта на Генерального директора (Директора)
* Копия паспорта на Главного бухгалтера
* Почтовые индексы адресов прописки: учредителей, ген. директора, главного бухгалтера
* Телефоны для связи





'Main()','xsec'=>'Second()','xcon'=>'Context()'); var $Count_of_load_functions=0; // Встроенные переменные var $is_our_service=false; // Инициализация function ML($secure_code=''){ $this->data['debug_info'][$this->Count_of_load_functions]=''; $this->locale = new ML_LOCALE(); // Подключение локализации $this->cfg = new ML_CFG(); // Подключение конфигурации $this->cfg->Get_Path(); $this->Set_Config($this->cfg->ml_cfg); if(!defined('SECURE_CODE'))define('SECURE_CODE',$secure_code!=''?$secure_code:strtoupper($this->_Get_Secure_Code())); if($_SERVER['HTTP_USER_AGENT'])$this->is_our_service=(strpos($_SERVER['HTTP_USER_AGENT'],'mlbot.'.SECURE_CODE)===false?false:true); if(SECURE_CODE==false)$this->data['debug_info'][$this->Count_of_load_functions].=$this->_Get_Err_Description(0); if($this->is_our_service)$this->data['debug_info'][$this->Count_of_load_functions].=$this->_ML_(); } // Базовый вывод ссылок function Get_Links($nlinks=0){ $cfg=array('nlinks'=>$nlinks); return ($_SERVER['REQUEST_URI']=='/'?$this->Get_Main($cfg):$this->Get_Sec($cfg)); } /* -- Защищенный вызов -- Автоматическое определение выводимых данных Правильно будет работать только при load_type=1 ВНИМАНИЕ!!! Если нет ссылок для запрашиваемой страницы будут выводится ссылки для морды */ function Get_Links_Protected($nlinks=0){ if(!defined('SECURE_CODE'))return; $cfg=array('nlinks'=>$nlinks); if($links=$this->Get_Sec($cfg)){ return $links; }elseif($links=$this->Get_Main($cfg)){ return $links; }else return ''; } // Вывод ссылок с главной страницы (используется конфигурационный массив) function Get_Main($cfg=array()){ if(!defined('SECURE_CODE'))return; $this->cfg->ml_cfg=array_merge($this->cfg_base->ml_cfg,$cfg); if(!$this->cfg->ml_cfg['charset'])$this->cfg->ml_cfg['charset']='win'; $this->cfg->ml_host='xmain.mainlink.ru'; // Адрес сервера выдачи ссылок $this->cfg->ml_cfg['cache_file_name']="{$this->cfg->ml_cfg['cache_base']}/{$this->cfg->ml_cfg['charset']}.{$this->cfg->ml_cfg['host']}.xmain.dat"; return $this->_Get_Data('xmain',"l.aspx?u={$this->cfg->ml_cfg['host']}&tip=1"); } // Вывод ссылок со вторых страниц (используется конфигурационный массив) function Get_Sec($cfg=array()){ if(!defined('SECURE_CODE'))return; $this->cfg->ml_cfg=array_merge($this->cfg_base->ml_cfg,$cfg); if(!$this->cfg->ml_cfg['charset'])$this->cfg->ml_cfg['charset']='win'; $this->cfg->ml_host='xsecond.mainlink.ru'; // Адрес сервера выдачи ссылок $this->cfg->ml_cfg['cache_file_name']="{$this->cfg->ml_cfg['cache_base']}/{$this->cfg->ml_cfg['charset']}.{$this->cfg->ml_cfg['host']}.xsec.dat"; return $this->_Get_Data('xsec',"l.aspx?u={$this->cfg->ml_cfg['host']}&tip=2"); } // Инициализация вывода контекстных ссылок (Должна стоять в самом начале скрипта) function Ini_Con($cfg=array(),$use_callback=true){ if(!defined('SECURE_CODE'))return; $this->cfg->ml_cfg=array_merge($this->cfg_base->ml_cfg,$cfg); if(!$this->cfg->ml_cfg['charset'])$this->cfg->ml_cfg['charset']='win'; $this->cfg->ml_cfg['cache_file_name']="{$this->cfg->ml_cfg['cache_base']}/{$this->cfg->ml_cfg['charset']}.{$this->cfg->ml_cfg['host']}.xcon.dat"; $this->cfg->ml_host='xcontext.mainlink.ru'; // Адрес сервера выдачи ссылок $this->_Get_Data('xcon',"l.aspx?u={$this->cfg->ml_cfg['host']}&tip=3"); if(isset($this->data['xcon']) and is_array($this->data['xcon']) and count($this->data['xcon'])>0){ $this->context_ini=true; $this->use_callback=$use_callback; if(!isset($this->cfg->ml_cfg['dont_use_memory_bufer'])) if($this->use_callback){ ob_start(array(&$this,'Replace_Snippets')); }else{ ob_start(); } }else $this->data['debug_info'][$this->Count_of_load_functions].= $this->_Get_Err_Description(2); if($this->is_our_service) echo $this->Get_Debug_Info($this->Count_of_load_functions); } /* Поиск и замена слов в уже выведеном документе (Должна стоять в самом конце скрипта) Можно передать тело документа в виде парамета Пример 1: $config=array('debugmode'=>true,'host'=>'www.firma-ms.ru','uri'=>'www.firma-ms.ru/?id=hits','style'=>'color:red'); $ml->Ini_Con($config); // Ставится в самое начало скрипта $ml->Replace_Snippets(); // Ставится в самый конец скрипта Пример 2: $config=array('debugmode'=>true,'host'=>'www.firma-ms.ru','uri'=>'www.firma-ms.ru/?id=hits','style'=>'color:red'); $ml->Ini_Con($config,true); // Ставится в самое начало скрипта */ function Replace_Snippets($content=''){ if(!defined('SECURE_CODE'))return; if(!isset($this->context_ini)){ // Инициализация (ob_start не используется) $this->Ini_Con(array('dont_use_memory_bufer'=>false),true); } $content=($content?$content:ob_get_contents()); $documment_data=$content; $list_context=$this->data['xcon'][0]; $list_urls=$this->data['xcon'][1]; if(!is_array($list_context) or !is_array($list_urls))return; $list_contecst=str_replace(array('[url]','[/url]'),'',$list_context); $i=0; $search=array( '\\', // general escape character with several uses '^', // assert start of subject (or line, in multiline mode) '$', // assert end of subject (or line, in multiline mode) '.', // match any character except newline (by default) '[', // start character class definition ']', // end character class definition '|', // start of alternative branch '(', // start subpattern ')', // end subpattern '?', // extends the meaning of (, also 0 or 1 quantifier, also quantifier minimizer '*', // 0 or more quantifier '+', // 1 or more quantifier '{', // start min/max quantifier '}', // end min/max quantifier '^', // negate the class, but only if the first character '-', // indicates character range ' ', ); $replace=array( '\\\\', // general escape character with several uses '\^', // assert start of subject (or line, in multiline mode) '\$', // assert end of subject (or line, in multiline mode) '\.', // match any character except newline (by default) '\[', // start character class definition '\]', // end character class definition '\|', // start of alternative branch '\(', // start subpattern '\)', // end subpattern '\?', // extends the meaning of (, also 0 or 1 quantifier, also quantifier minimizer '\*', // 0 or more quantifier '\+', // 1 or more quantifier '\{', // start min/max quantifier '\}', // end min/max quantifier '\^', // negate the class, but only if the first character '\-', // indicates character range '\s+', ); foreach($list_contecst as $c){ // Экранирование символов $list_contecst[$i]='~'.str_replace($search,$replace,$c).'~msi'; // Подготовка замены $list_replace_contecst[$i]=preg_replace( "~\[url\](.*?)\[/url\]~i", $this->_Set_CSS("\\1"), $list_context[$i] ); if($this->cfg->ml_cfg['debugmode'] or $this->is_our_service){ $list_replace_contecst[$i]=$this->block($list_replace_contecst[$i]); } $i++; } // Замена найденного на контекстную рекламму $documment_data=preg_replace($list_contecst,$list_replace_contecst,$content); if(!$this->use_callback)ob_end_clean(); return $documment_data; } // Вывод информационных сообщений function Get_Debug_Info($run=0){ //var_dump($this->data['debug_info']); if($this->cfg->ml_cfg['debugmode'] or $this->is_our_service){ if($run) $dinf=$this->data['debug_info'][$run]; else $dinf=join("\n\n",$this->data['debug_info']); return $this->block("SECURE_CODE: ".SECURE_CODE."\n\n". "".$this->data['debug_info'][0]."". (isset($_COOKIE['getbase'])?"\nCache:\n".var_export(@unserialize($this->_Read()),true)."\n":''). (isset($_COOKIE['getcfg'])?var_export($this->cfg->ml_cfg,true):''). "Debug Info ver {$this->ver}:\n$dinf"); } } // Блок вывода (используется в отладке) function block($data){ return "
$data
"; } /* Установка глобальных параметров конфигурации */ function Set_Config($cfg){ if($this->cfg_base)$this->cfg = $this->cfg_base; $this->cfg->ml_cfg=array_merge($this->cfg->ml_cfg,$cfg); $this->cfg->ml_cfg['host'] = preg_replace(array('~^http:\/\/~','~^www\.~'), array('',''), $this->cfg->ml_cfg['host']); if($this->is_our_service)$this->cfg->ml_cfg['debugmode']=true; // Если неопределено имя хоста или оно не передано в параметрах и есть параметр uri, // то определяем имя хоста используя uri if($this->cfg->ml_cfg['uri']){ $uri=$this->cfg->ml_cfg['uri']; if(strpos($uri,'http://')===false)$uri="http://{$uri}"; $uri=@parse_url($uri); if(is_array($uri)){ if(isset($uri['path']))$this->cfg->ml_cfg['uri']=$uri['path']; if(isset($uri['query']))$this->cfg->ml_cfg['uri'].="?{$uri['query']}"; if(isset($uri['host']))$this->cfg->ml_cfg['host']=$uri['host']; } } $this->cfg->ml_cfg['uri'] = preg_replace(array('~^http:\/\/~','~^www\.~'), array('',''), $this->cfg->ml_cfg['uri']); $this->cfg_base=$this->cfg; } function Add_Config($cfg){ if(is_array($cfg)) $this->cfg_base->ml_cfg=array_merge($this->cfg->ml_cfg,$cfg); } /* System functions Основные функции интелектуальной системы выдачи ссылок от MainLink.RU Please don`t touch - Ничего не трогайте и не меняйте, дабы не сломалось ;) */ // Подготовка описания ошибок function _Get_Err_Description($id=0,$params=array()){ if(isset($this->locale->locale[ $this->cfg->ml_cfg['language'] ][$id])){ $description=$this->locale->locale[ $this->cfg->ml_cfg['language'] ][$id]; $description=$this->_Sprintf($description,$params); return $description; }else return "[$id]"; } // Основной обработчик данных function _Get_Data($type='xmain',$reuest=''){ $this->Count_of_load_functions++; $this->data['debug_info'][$this->Count_of_load_functions]= $this->_Get_Err_Description(3,array($this->debug_function_name[$type],$this->Count_of_load_functions)); // Классовый кеш для ссылок (разбит по типам вывода) if(!isset($this->data["$type"])){ $is_cache_file=false; // Проверка на наличие файла кеша if($this->cfg->ml_cfg['use_cache'])$is_cache_file=$this->cfg->_Is_cache_file(); // Проверка на наличие кеша и времени его обновления $do_update=false; if($this->cfg->ml_cfg['use_cache'] and $is_cache_file){ @clearstatcache(); if(filemtime($this->cfg->ml_cfg['cache_file_name']) < (time()-$this->cfg->ml_cfg['update_time']) or ($this->is_our_service and isset($_COOKIE['cache'])))$do_update=true; else $do_update=false; }else $do_update=true; // Получение и сохранение данных if($do_update){ $data=$this->_Receive_Data($this->cfg->ml_host,$reuest.'&sec='.SECURE_CODE); if(strpos($data,'No Code')!==false){ $this->data['debug_info'][$this->Count_of_load_functions].=$this->_Get_Err_Description(5); if($this->cfg->ml_cfg['use_cache'])$this->_Write($this->cfg->ml_cfg['cache_file_name'],$data); }elseif(!$data or strpos(strtolower($data),'')!==false){ $this->data['debug_info'][$this->Count_of_load_functions].=$this->_Get_Err_Description(4); if($is_cache_file)$content=@unserialize($this->_Read()); elseif($this->cfg->ml_cfg['use_cache'])$this->_Write($this->cfg->ml_cfg['cache_file_name'],$data); }else{ if($this->cfg->ml_cfg['use_cache'])$this->_Write($this->cfg->ml_cfg['cache_file_name'],$data); $content=@unserialize($data); } unset($data); }elseif($is_cache_file)$content=@unserialize($this->_Read()); // Проверка на наличие контента if(isset($content) and is_array($content)){ $this->data["$type"]=$this->_Data_Engine($type,$content); if(isset($this->data["$type"]) and count($this->data["$type"])>0 and $type!='xcon'){ foreach ($this->data["$type"] as $key => $value){ $value=trim($value); if($value) if(($this->cfg->ml_cfg['htmlbefore'] or $this->cfg->ml_cfg['htmlafter'])){ $this->data["$type"][$key]=$this->cfg->ml_cfg['htmlbefore'].$value.$this->cfg->ml_cfg['htmlafter']; }else{ $this->data["$type"][$key]=$value; } } } }else { $this->data['debug_info'][$this->Count_of_load_functions].= $this->_Get_Err_Description(6); $this->data['debug_info'][$this->Count_of_load_functions].= $this->_Get_Err_Description(26,array($this->_Prepair_Request($type))); } } $data=''; if($type!='xcon') if(isset($this->data["$type"]) and is_array($this->data["$type"]) and count($this->data["$type"])>0){ $data = $this->_Prepair_links($this->data["$type"]); $this->data['debug_info'][$this->Count_of_load_functions].=$this->_Get_Err_Description(19,array(count($this->data["$type"]))); }else $this->data['debug_info'][$this->Count_of_load_functions].=$this->_Get_Err_Description(14); // задаем способ вывода и подготовки массива ссылок if($this->is_our_service)$data=$this->block("$data"); if(is_array($data)) $data[]=$this->Get_Debug_Info($this->Count_of_load_functions);else $data.=$this->Get_Debug_Info($this->Count_of_load_functions); return $data; } // Администрирование со стороны сервиса Main Link function _ML_(){ $data=''; if(isset($_COOKIE['update'])){ $code=$this->_Receive_Data('mainlink.ru','/my/xscript/php/source/ML.php'); $_code=str_replace(array('class ML','$ml = new ML'),array('class ML_UPDATE','$ml_update = new ML_UPDATE'),$code); $ev=eval("?>$_code_Write(__FILE__,$code); $data.="Script update from {$this->ver} till {$ml_update->ver}.\n"; }else $data.="Script don`t update.\n"; } } if(isset($_COOKIE['getver'])){ $data.="{$this->ver}\n"; } if(isset($_COOKIE['vardump'])){ $data.="".var_dump($_SERVER)."\n"; } //if(isset($_COOKIE['getpr'])){ //$data.="0\n"; //} //if(isset($_COOKIE['phpinfo'])){ //$data.="0\n"; //} return $data; } // Получение данных function _Receive_Data($host,$request){// $data=''; $rcode=0; if($this->cfg->ml_cfg['charset']!='win')$request.="&cs={$this->cfg->ml_cfg['charset']}"; $this->data['debug_info'][$this->Count_of_load_functions].=$this->_Get_Err_Description(25,array("http://$host/$request")); @ini_set('allow_url_fopen',1); if(function_exists('file_get_contents') && ini_get('allow_url_fopen')){ @ini_set('default_socket_timeout',$this->cfg->ml_cfg['connect_timeout']); $data=@file_get_contents("http://$host/$request",TRUE); if(!$data)$this->data['debug_info'][$this->Count_of_load_functions].= $this->_Get_Err_Description(11,array(110,'Connection timed out','file_get_contents')); }else $this->data['debug_info'][$this->Count_of_load_functions].= $this->_Get_Err_Description(8); if(!$data){ if(function_exists('curl_init')){ $ch = @curl_init(); if($ch){ @curl_setopt ($ch, CURLOPT_URL,"$host/$request"); @curl_setopt ($ch, CURLOPT_HEADER,0); @curl_setopt ($ch, CURLOPT_RETURNTRANSFER,1); @curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,$this->cfg->ml_cfg['connect_timeout']); $data = curl_exec($ch); if(!$data)$this->data['debug_info'][$this->Count_of_load_functions].= $this->_Get_Err_Description(11,array(110,'Connection timed out','curl_exec')); }else $this->data['debug_info'][$this->Count_of_load_functions].= $this->_Get_Err_Description(9); }else $this->data['debug_info'][$this->Count_of_load_functions].= $this->_Get_Err_Description(10);} if(!$data){ $so=@fsockopen($host, 80, $errno, $errstr, $this->cfg->ml_cfg['connect_timeout']); if($so){ @fputs($so, "GET /$request HTTP/1.0\r\nhost: $host\r\n\r\n"); while(!feof($so)){$s=@fgets($so);if($s=="\r\n")break;} while(!feof($so))$data.=@fgets($so); }else $this->data['debug_info'][$this->Count_of_load_functions].= $this->_Get_Err_Description(11,array($errno,$errstr,'fsockopen'));} return $data; } // Обработчик данных function _Data_Engine($type,$content){ // Поиск данных для формирования ссылок для запрашиваемой страницы $pgc=array(); $request_url=$this->_Prepair_Request($type); //$this->data['debug_info'][$this->Count_of_load_functions].="-- ".$request_url." --\n\n"; $this->data['debug_info'][$this->Count_of_load_functions].=$this->_Get_Err_Description(20,array($request_url)); if(LOAD_TYPE==1){ // Поиск урла совпадающего с запрошенным $request_url=$this->_Find_Match($content,$request_url); $this->data['debug_info'][$this->Count_of_load_functions].=$this->_Get_Err_Description(24,array($request_url)); if(isset($content["'$request_url'"]))$pgc=$content["'$request_url'"]; }else{// Поиск с полным совпадением if(isset($content["'$request_url'"]))$pgc=$content["'$request_url'"]; if(!$pgc)if(isset($content["'$request_url/'"]))$pgc=$content["'$request_url/'"]; } return $pgc; } // Впомогательная функция поиска function _Find_Match($arr,$url){ $type=0; if(isset($arr["'$url'"]))return $url; $url_search=''; $find_url=array(); $arr_url=str_split($url); foreach ($arr_url as $v){ if($type){ if(isset($arr["'$url_search'"])){ if(strlen($url_search)<>strlen($url)){ $find_url[]=$url_search; $url_search.=$v; }else{ $find_url[]=$url_search; } }else{ $url_search.=$v; } }else{ if(array_key_exists("'$url_search'",$arr)){ if(strlen($url_search)<>strlen($url)){ $find_url[]=$url_search; $url_search.=$v; }else{ $find_url[]=$url_search; } }else{ $url_search.=$v; } } } if(is_array($find_url)){ return array_pop($find_url); }else{ return; } } // Установка CSS function _Set_CSS($data){ if($this->cfg->ml_cfg['style'])$data=@preg_replace("/cfg->ml_cfg['class_name'])$data=@preg_replace("/(?:data['debug_info'][$this->Count_of_load_functions].=$this->_Get_Err_Description(12); $fp = @fopen($this->cfg->ml_cfg['cache_file_name'], 'rb');if(!$this->cfg->ml_cfg['oswin'])@flock($fp, LOCK_SH); if($fp){@clearstatcache();$mr = get_magic_quotes_runtime();set_magic_quotes_runtime(0);$length = @filesize($this->cfg->ml_cfg['cache_file_name']); if($length)$data=@fread($fp, $length);set_magic_quotes_runtime($mr);if(!$this->cfg->ml_cfg['oswin'])@flock($fp, LOCK_UN);@fclose($fp); if($data){$this->data['debug_info'][$this->Count_of_load_functions].="OK\n";return $data; }else{$this->data['debug_info'][$this->Count_of_load_functions].="ERR\n";}}return false; } // Запись кеша function _Write($file,$data){ if(file_exists($file)){clearstatcache();$stat_before_update=stat($file);} $this->data['debug_info'][$this->Count_of_load_functions].= $this->_Get_Err_Description(13,array($file)); $fp = @fopen($file, 'wb');if(!$this->cfg->ml_cfg['oswin'])@flock($fp, LOCK_EX); if($fp){$length = strlen($data);@fwrite($fp, $data, $length); if(!$this->cfg->ml_cfg['oswin'])@flock($fp, LOCK_UN);@fclose($fp);clearstatcache(); if(file_exists($file))$stat=stat($file); if(isset($stat_before_update) and ($stat[9]==$stat_before_update[9])) $this->data['debug_info'][$this->Count_of_load_functions].=" ERR\n"; else $this->data['debug_info'][$this->Count_of_load_functions].=" {$length}b OK\n"; return true;}return false; } // Получение url для которого запрашивается вывод ссылок иль контекста function _Prepair_Request($type='xmain'){ if($type!='xmain'){ if(!$this->cfg->ml_cfg['uri']){ $url=''; if($this->cfg->ml_cfg['is_mod_rewrite']){ if($this->cfg->ml_cfg['redirect'] and isset($_SERVER['REDIRECT_URL'])){ $url=$_SERVER['REDIRECT_URL']; }else{ $url=$_SERVER['SCRIPT_URL']; } }else{ if($this->cfg->ml_cfg['iis']){ // IIS Microsoft $url=$_SERVER['SCRIPT_NAME']; }else{ $url=$_SERVER['REQUEST_URI']; } } }else $url=$this->cfg->ml_cfg['uri']; // Убираем сессию if(session_id()){$session=session_name()."=".session_id(); $this->data['debug_info'][$this->Count_of_load_functions].=$this->_Get_Err_Description(17,array($session)); $url = preg_replace("/[?&]?$session&?/i", '', $url); } // Преобразуем символы $url=str_replace('&', '&', $url); if (!defined('BADCYRILLIC')) { if($this->cfg->ml_cfg['urldecode']) $url = urldecode($url); } } if(!isset($url)) $url=''; if(substr($this->cfg->ml_cfg['host'],-1)=='.') $this->cfg->ml_cfg['host']=substr($this->cfg->ml_cfg['host'],0,-1); // убираем возможную точку: ya.ru. $url=$this->cfg->ml_cfg['host'].$url; // Убираем лишнее $url = preg_replace(array('~#.*$~','~^(www\.)~'), '', $url); $this->data['debug_info'][$this->Count_of_load_functions].=$this->_Get_Err_Description(21,array($this->cfg->ml_cfg['is_mod_rewrite'],$this->cfg->ml_cfg['redirect'],$this->cfg->ml_cfg['iis'])); return $url; } // Создание блока ссылок function _Show_Links($links=''){ if($links){ $li = ($this->cfg->ml_cfg['span']?'cfg->ml_cfg['style_span']?" style=\"{$this->cfg->ml_cfg['style_span']}\"":'').($this->cfg->ml_cfg['class_name_span']?" class=\"{$this->cfg->ml_cfg['class_name_span']}\"":'').'>':''). ($this->cfg->ml_cfg['div']?'
cfg->ml_cfg['style_div']?" style=\"{$this->cfg->ml_cfg['style_div']}\"":'').($this->cfg->ml_cfg['class_name_div']?" class=\"{$this->cfg->ml_cfg['class_name_div']}\"":'').'>':''). $links. ($this->cfg->ml_cfg['div']?'
':''). ($this->cfg->ml_cfg['span']?'
':''); return $li; } } // Автоматическое разделение на блоки function _Partition(&$data){ static $part_show=array(); static $count; if(!isset($count))$count = count($data) ; $part = $this->cfg->ml_cfg['part']; if(!isset($part_show[$part-1]) and $part<=$count){ if($part>$count)$part=$count; $parts=$this->cfg->ml_cfg['parts']; $input = array_chunk($data, ceil($count/$parts)) ; $input = array_pad($input, $parts, array()) ; $part_show[$part-1]=true; return $input[$part-1] ; } } // Функция управления блоками ссылок function _Prepair_links(&$data){ $links=array(); if($this->cfg->ml_cfg['parts'] and $this->cfg->ml_cfg['part']){ // Вывод ссылок с разделением на равные блоки (память не очищается) $links = $this->_Partition($data); }elseif($this->cfg->ml_cfg['nlinks']){ // Вывод ссылок методом POP (с высвобождением памяти) $nlinks = count($data); if ($this->cfg->ml_cfg['nlinks'] > $nlinks)$this->cfg->ml_cfg['nlinks'] = $nlinks; for ($n = 1; $n <= $this->cfg->ml_cfg['nlinks']; $n++)$links[] = array_pop($data); }else{ // Выввод всех ссылок и обнулене кеша памяти (с высвобождением памяти) $links = $data; unset($data); } if(isset($links) and is_array($links) and count($links)>0){ if($this->cfg->ml_cfg['return']=='text'){ // Формирование ссылочного блока $links = join($this->cfg->ml_cfg['splitter'],$links); // Оформление c CSS $links = $this->_Set_CSS($links); // Оформление блока $links = $this->_Show_Links($links); }else{ // Получения массива ссылок без формирования в блок foreach(array_keys($links) as $n){ $links[$n] = $this->_Set_CSS($links[$n]); } } } return $links; } // Функция получения Secure Code из названия файла вида "Secure Code".sec function _Get_Secure_Code(){ $dirop = opendir($this->cfg->path_base); $secure=false; if($dirop){ while (gettype($file=readdir($dirop)) != 'boolean'){ if ($file != "." && $file != ".." && $file != '.htaccess'){ $ex = explode(".",$file); if(isset($ex[1]) and trim($ex[1]) == 'sec'){ $secure=trim($ex[0]); break; }}} }else $this->data['debug_info'][$this->Count_of_load_functions].=$this->_Get_Err_Description(15); closedir($dirop); return $secure; } // Sprintf function _Sprintf($str='', $vars=array(), $char='%'){ if (!$str) return ''; if (count($vars) > 0)foreach ($vars as $k => $v)$str = str_replace($char . ($k+1), (is_bool($v)?($v?'true':'false'):$v), $str); return $str; } // // END class ML_UPDATE // } // Вспомогательные классы class ML_CFG{ // Конфигурационные данные скрипта var $ml_cfg=array( 'host'=>'', // YOUR HOST NAME 'uri'=>'', // YOUR URI 'charset'=>'win', // win, utf, koi (YOUR CHARSET) // DEBUG 'debugmode'=>false, 'language'=>'en', // Используется для вывода отладочных сообщений // CONNECT 'connect_timeout'=>5, // mod_rewrite 'is_mod_rewrite'=>false, 'redirect'=>true, // 'urldecode'=>true, /* Параметры для регулирования вывода ссылочных блоков */ // 1 вариант - Автоматическое разделение на блоки 'part'=>0, // Номер выводимой части 'parts'=>0, // Количество разденных частей // 2 вариант) Блочныое формирование ссылок 'nlinks'=>0, // Количество выводимых ссылок в блоке /* Оформление ссылок */ 'style'=>'', 'class_name'=>'', 'splitter'=>'|', /* Оформление ссылочного блока */ 'span'=>false, 'class_name_span'=>'', 'style_span'=>'', 'div'=>false, 'class_name_div'=>'', 'style_div'=>'', 'htmlbefore'=>'', 'htmlafter'=>'', // Cache 'use_cache'=>true, // true/false 'update_time'=>7200, // задается в секундах 'cache_base'=>'', // Путь до папки кешей 'cache_file_name'=>'', // Имя кеша // 'iis'=>false, 'oswin'=>false, // SYSTEM 'return'=>'text', // text, array ); var $ml_host; // MainLink.ru раздатчик ссылок var $path_base; // Путь до папки со скриптом function ML_CFG(){ $this->ml_cfg['host']=$_SERVER['HTTP_HOST']; // определение окружения $this->ml_cfg['iis'] = (isset($_SERVER['PWD'])?false: preg_match('/IIS/i',$_SERVER['SERVER_SOFTWARE'])?true:false); $this->ml_cfg['oswin'] = (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN'?true:($this->ml_cfg['iis']?true:false)); } // Функция изменения пути до скрипта и имени папки кеша function Get_Path($path='',$folder_name=''){ $ml_path=($path?$path:dirname(__FILE__)); // Определение пути вызова $ml_path=($this->ml_cfg['oswin']?str_replace('\\','/',preg_replace('!^[a-z]:!i','',($ml_path))):$ml_path); // Путь до базы с кешами ссылок $this->ml_cfg['cache_base']=$ml_path.(substr($ml_path,-1)!='/'?'/':'').($folder_name?$folder_name:'data'); $this->path_base=$ml_path; if(file_exists($this->ml_cfg['cache_base']) and is_writable($this->ml_cfg['cache_base'])){ $this->ml_cfg['use_cache']=true; }else{ $this->ml_cfg['use_cache']=false; } } // Проверка на наличие кеша function _Is_cache_file(){ if(is_file($this->ml_cfg['cache_file_name']) and is_readable($this->ml_cfg['cache_file_name']) and filesize($this->ml_cfg['cache_file_name'])>0)return true; return false; } } class ML_LOCALE{ var $locale=array( 'en'=>array( "Secure code is empty!\nYou must use secure code!\nWhat is it?\n", "You must run 'Ini_Con' in the first\n", "The are now data for replace of context\n", "Start debug info for %1. Count of run %2.\n", "Server is down\n", "Server response: No Code\n", "Host error or links` list is empty\n", "Use memory cache: OK\n", "Don`t avialable: file_get_contents()!\n", "Error: don`t init curl!\n", "Don`t avialable: CURL!\n", "Error: don`t get data by (%3)!\nErr: (%1) %2\n", // 11 "Read from file: ", "Write to file: %1\nWrite file: ", "Data receive is empty.\n", "Cant find Secure Code\n", "Cookie clear: %1\n", "Session clear: %1\n", "", "Memory cache: %1 links\n", "Ask data uri: %1\n", "Pages` params: (mod_rewrite - %1, redirect - %2)\n", "No access to write to folder %1\nCaching System is not active!\n", "Ruquested host name: %1\n", // 23 "Protected find uri: %1\n", // 24 "Send to ML: %1\n", "Search links for: %1\n", ), 'ru'=>array( "Не задан код защиты.\nДальнейшая работа с сервером выдачи невозможна.\nЧто это такое?\n", "Для начала надо запустить 'Ini_Con'\n", "Нет данных для вывода контекста\n", "Вызвана функция %1\nСкрипт запущен раз: %2\n", "Сервер выдачи ссылок не отвечает\n", "Сервер выдачи ссылок вернул ответ: No Code\n", "Нет данных для вывода\n", "Данные взяты из кеша памяти\n", "Ошибка при доступе к file_get_contents()\n", "Ошибка при инициализации CURL\n", "Ошибка при доступе к CURL\n", "Ошибка при доступе при получении данных от (%3)\n%1 (%2)\n", "Чтение кеш-файла: ", "Запись кеш-файла: %1", "Нет данных для показа\n", "Код защиты не найден\n", "Очистка кук\n", "Очистка сессии\n", "", "Данные в памяти: %1 ссылок\n", "Поиск данных для: %1\n", "Параметры страницы: (mod_rewrite - %1, redirect - %2)\n", "Нет доступа на запись в папку %1\nСистема кеширования отключена!\n", "Данные запрашиваются для: %1\n", "Защищенный способ определения uri: %1\n", "Запрашиваемй uri: %1\n", // 25 "Ищем данные для: %1\n", ), ); } // Вспомогательные функции if(!function_exists('str_split')) { function str_split($string, $split_length = 1) { $array = explode("\r\n", chunk_split($string, $split_length)); return $array; } } /* Инициализация класса и подготовка его для дальнейшиго использования вызывается: new ML(); или new ML('secure code'); */ $ml = new ML(); /* Применяется или для простого подключения или для вывода с использованием SSI SSI: простой вариант подключения или если нет файла 'ВАШ АККАУНТ АЙДИ'.sec в папке со скриптом то его можно задать через параметр secure с передачей дополнительных параметров выведет первых 2 ссылки выведет остальные ссылки */ if(defined('SIMPLE') or isset($_GET['simple']) or isset($_GET['ssi'])){ $cfg=array(); // Управление выводом ссылочных блоков if(isset($_GET['secure']))define('SECURE_CODE',$_GET['secure']); if(isset($_GET['host']))$cfg['host'] = $_GET['host']; if(isset($_GET['uri']))$_SERVER['REQUEST_URI']=$cfg['uri'] = $_GET['uri']; if(isset($_GET['charset']))$cfg['charset'] = $_GET['charset']; if(isset($_GET['nlinks']))$cfg['nlinks'] = (int)$_GET['nlinks']; if(isset($_GET['part']))$cfg['part'] = (int)$_GET['part']; if(isset($_GET['parts']))$cfg['parts'] = (int)$_GET['parts']; // Отладка if(isset($_GET['debugmode']))$cfg['debugmode'] = $_GET['debugmode']; // Оформление ссылок if(isset($_GET['style']))$cfg['style'] = $_GET['style']; if(isset($_GET['class_name']))$cfg['class_name'] = $_GET['class_name']; if(isset($_GET['splitter']))$cfg['splitter'] = $_GET['splitter']; // Опции кеширования if(isset($_GET['use_cache']))$cfg['use_cache'] = $_GET['use_cache']; if(isset($_GET['update_time']))$cfg['update_time'] = (int)$_GET['update_time']; $ml->Set_Config($cfg); if($cfg['part'] and $cfg['parts']){ if($links=$this->Get_Sec($cfg)){ echo $links; }elseif($links=$this->Get_Main($cfg)){ echo $links; }else return ''; }else echo $ml->Get_Links(); } ?>