Roger Moore

**Sir Roger George Moore** (14 October 1927 – 23 May 2017) was an English actor. He was the third actor to portray fictional British secret agent James Bond in the Eon Productions film series, playing the character in seven feature films between 1973 and 1985. Moore's seven appearances as Bond, from *Live and Let Die* to *A View to a Kill*, are the most of any actor in the Eon-produced entries.

On television, Moore played the lead role of Simon Templar, the title character in the British mystery thriller series *The Saint* (1962–1969). He also had roles in American series, including Beau Maverick on the Western *Maverick* (1960–1961), in which he replaced James Garner as the lead, and a co-lead of the action-comedy *The Persuaders!* (1971–1972). Continuing to act on screen in the decades after his retirement from the Bond franchise, Moore's final appearance was in a pilot for a new *Saint* series that became a 2017 television film.

Moore was appointed a UNICEF Goodwill Ambassador in 1991 and was knighted by Queen Elizabeth II in 2003 for services to charity. In 2007, he received a star on the Hollywood Walk of Fame for his contributions to the film industry. He was made a Commander of the Order of Arts and Letters by the French government in 2008.

## Early life

Roger Moore was born on 14 October 1927 in Stockwell, London. He was the only child of George Alfred Moore (1904–1997), a policeman based in Bow Street, London, and Lillian "Lily" Pope (1904–1986). His mother was born in Calcutta, India, to an English family. He attended Battersea Grammar School, but was evacuated to Holsworthy in Devon during the Second World War, and attended Launceston College in Cornwall. He was further educated at Dr Challoner's Grammar School in Amersham, Buckinghamshire.

Moore was apprenticed to an animation studio, but was fired after he made a mistake with some animation cels. When his father investigated a robbery at the home of film director Brian Desmond Hurst, Moore was introduced to the director and hired as an extra for the 1945 film *Caesar and Cleopatra*. While there, Moore attracted an off-camera female fan following, and Hurst decided to pay Moore's fees at the Royal Academy of Dramatic Art. Moore spent three terms at RADA, where he was a classmate of his future Bond co-star Lois Maxwell, the original Miss Moneypenny. During his time there, he developed the Mid-Atlantic accent and relaxed demeanour that became his screen persona.

At 18, shortly after the end of the Second World War, Moore was conscripted for national service. On 21 September 1946, he was commissioned into the Royal Army Service Corps as a second lieutenant. He was an officer in the Combined Services Entertainment section, eventually becoming a captain commanding a small depot in West Germany. There he looked after entertainers for the armed forces passing through Hamburg.

## Career

### Early work (1945–1953)

Moore had some early uncredited appearances in *Perfect Strangers*, *Caesar and Cleopatra* (both 1945), *Gaiety George*, *Piccadilly Incident* (both 1946), and *Trottie True* (1949) appearing alongside an uncredited Christopher Lee (both actors being cast by Brian Desmond Hurst as stage-door Johnnies).

In his book *Last Man Standing: Tales from Tinseltown*, Moore states that his first television appearance was on 27 March 1949 in *The Governess* by Patrick Hamilton, a live broadcast (as usual in that era), in which he played the minor part of Bob Drew. Other actors in the show included Clive Morton and Betty Ann Davies. He had uncredited parts in films including *Paper Orchid* and *The Interrupted Journey* (both 1949). He was in *Drawing-Room Detective* on TV and appeared in the films *One Wild Oat* and *Honeymoon Deferred* (both 1951).

In the early 1950s Moore worked as a model, appearing in print advertisements in the UK for knitwear (earning him the nickname "The Big Knit") and a wide range of other products such as toothpaste.

Moore travelled to the United States and began to work in television. He appeared in adaptations of *Julius Caesar* and *Black Chiffon*, and in two episodes of *Robert Montgomery Presents*, as well as the TV movie *The Clay of Kings* (all 1953).

### MGM (1954–1956)

In March 1954, MGM signed Moore to a seven-year contract. He started his MGM contract with a small role in *The Last Time I Saw Paris* (1954), flirting with Elizabeth Taylor. He appeared in *Interrupted Melody*, a biographical movie about opera singer Marjorie Lawrence's recovery from polio, in which he was billed third under Glenn Ford and Eleanor Parker as Lawrence's brother Cyril. That same year, he played a supporting role in the swashbuckler *The King's Thief* starring Ann Blyth, Edmund Purdom, David Niven and George Sanders.

In the 1956 film *Diane*, Moore was billed third again, this time under Lana Turner and Pedro Armendariz, in a 16th-century period piece set in France with Moore playing Prince Henri, the future king. Moore was released from his MGM contract after two years following the film's critical and commercial failure. In his own words, "At MGM, RGM [Roger George Moore] was NBG [no bloody good]."

Moore then freelanced for a time, appearing in episodes of *Ford Star Jubilee* (1956), *Lux Video Theatre* (1957) and *Matinee Theatre' (1957).*

### *Ivanhoe* (1958–1959)

Moore's first success was playing the eponymous hero, Sir Wilfred of Ivanhoe, in the 1958–59 series *Ivanhoe*, a loose adaptation of the 1819 romantic novel by Sir Walter Scott set in the 12th century during the era of Richard the Lionheart, delving into Ivanhoe's conflict with Prince John. Shot mainly in England at Elstree Studios and Buckinghamshire, some of the show was also filmed in California owing to a partnership with Columbia Studios' Screen Gems. Aimed at younger audiences, the pilot was filmed in colour, a reflection of its comparatively high budget for a British children's adventure series of the period, but subsequent episodes were shot in black and white. Christopher Lee and John Schlesinger were among the show's guest stars, and series regulars included Robert Brown (who in the 1980s played M in several James Bond films) as the squire Gurth, Peter Gilmore as Waldo Ivanhoe, Andrew Keir as villainous Prince John, and Bruce Seton as noble King Richard. Moore suffered broken ribs and a battle-axe blow to his helmet while performing some of his own stunts filming a season of 39 half-hour episodes, and later reminisced, "I felt a complete Charlie riding around in all that armour and damned stupid plumed helmet. I felt like a medieval fireman."

### Warner Bros. (1959–1961)

 File:Roger Moore circa 1960.JPG
After that, he spent a few years mainly doing one-shot parts in television series, including an episode of *Alfred Hitchcock Presents* in 1959 titled "The Avon Emeralds". He signed another long-term contract to a studio, this time to Warner Bros.

In 1959, he took the lead role in *The Miracle*, a version of the play *Das Mirakel* for Warner Bros. showcasing Carroll Baker as a nun. The part had been turned down by Dirk Bogarde. That same year, Moore was directed by Arthur Hiller in "The Angry Young Man", an episode of the television series *The Third Man* starring Michael Rennie as criminal mastermind Harry Lime, the role portrayed by Orson Welles in the film version.

#### *The Alaskans* (1959–1960)

 File:Roger Moore The Alaskans 1959.JPG
Moore's next television series involved playing the lead as "Silky" Harris for the ABC/Warner Bros. 1959–60 Western *The Alaskans*, with co-stars Dorothy Provine as Rocky, Jeff York as Reno, and Ray Danton as Nifty. The show ran for a single season of 37 hour-long episodes on Sunday nights. Though set in Skagway, Alaska, with a focus on the Klondike Gold Rush around 1896, the series was filmed in the hot studio lot at Warner Bros. in Hollywood with the cast costumed in fur coats and hats. Moore found the work highly taxing and his off-camera affair with Provine complicated matters even more. Moore later referred to the experience as his "most appalling television series."

He subsequently appeared as the questionable character "14 Karat John" in the two-part episode "Right Off the Boat" of the ABC/WB crime drama *The Roaring 20s*, with Rex Reason, John Dehner, Gary Vinson, and Dorothy Provine, appearing in a similar role, but with a different character name.

#### *Maverick* (1960–1961)

 File:Roger Moore Beau Maverick 1960.JPG
 File:Roger Moore Kathleen Crowley Maverick 1961.JPG
In the wake of *The Alaskans*, Moore was cast as Beau Maverick, an English-accented cousin of frontier gamblers Bret Maverick (James Garner), Bart Maverick (Jack Kelly), and Brent Maverick (Robert Colbert) in the much more successful ABC/WB Western series *Maverick*.

Moore appeared as the character in 14 episodes after Garner had left the series at the end of the previous season, wearing some of Garner's costumes; while filming *The Alaskans*, he had already recited much of Garner's dialogue, for the Alaskan series frequently recycled *Maverick* scripts, changing only the names and locales. He had also filmed a *Maverick* episode with Garner two seasons earlier, in which Moore played a different character, in a retooling of Richard Brinsley Sheridan's 1775 comedy of manners play *The Rivals*. In the course of the story, Moore and Garner's characters switched names on a bet, with Moore consequently identifying himself as "Bret Maverick" through most of the episode.

Moore's debut as Beau Maverick occurred in the first episode of the 1960–61 fourth season, "The Bundle from Britain", one of four episodes in which he shared screen time with cousin Bart (Jack Kelly). Robert Altman wrote and directed "Bolt from the Blue", an episode featuring Will Hutchins as a frontier lawyer similar to his character in the series *Sugarfoot*, and "Red Dog" found Beau mixed up with vicious bank robbers Lee Van Cleef and John Carradine. Kathleen Crowley was Moore's leading lady in two episodes ("Bullet for the Teacher" and "Kiz"), and others included Mala Powers, Roxane Berard, Fay Spain, Merry Anders, Andra Martin, and Jeanne Cooper. Upon leaving the series, Moore cited a decline in script quality since the Garner era as the key factor in his decision to depart; ratings for the show were also down. Moore was originally slated to appear with both Jack Kelly and Robert Colbert in the series but by the time Colbert starred in his first episode, Moore had already left the series. Numerous early publicity stills of Kelly, Moore and Colbert posing together exist, however.

Moore was still under contract with Warners, who cast him in *The Sins of Rachel Cade* (1961), making love to a nun played by Angie Dickinson, and *Gold of the Seven Saints* (1961), supporting Clint Walker. He also went to Italy to make the adventure comedy *Romulus and the Sabines* (1961).

### *The Saint* (1962–1969)

 File:Roger Moore The Saint 1969.JPG
Lew Grade cast Moore as Simon Templar in a new adaptation of *The Saint*, based on the novels by Leslie Charteris. Moore said in an interview in 1963 that he wanted to buy the rights to Leslie Charteris's character and the trademarks. The television series was broadcast by ITV in the UK between 1962 and 1969, and its overseas success made Moore a household name. After the strong performance in the US of the first two series in first-run syndication, NBC picked up the show in 1966. By early 1967, Moore had achieved international stardom. The series established his suave, quipping style which he carried forward to James Bond, and also saw him exhibit his trademark raised eyebrow. Francis Blagburn in *The Telegraph* writes,

“*The raised eyebrow is perhaps the hardest facial gesture to perfect in the gentleman's arsenal. Get it right and you give the impression of someone who is in total control; get it wrong and you look like, well, Dwayne 'The Rock' Johnson (and no one wants that). Sir Roger wrote the book in how to raise an eyebrow... as Simon Templar, he coolly infers that he knows, and he knows that you know that he knows.*”
―{{{2}}}

*The Saint* ran from 1962 for six series and 118 episodes. Moore went on to direct nine episodes of the later series, which moved into colour in 1967. Several episodes were edited together to form the films, *The Saint and the Fiction Makers* (1968) and *Vendetta for the Saint* (1969).

### Post-*Saint* films and *The Persuaders!* (1969–1972)

He made two films immediately after the series ended: *Crossplot* (1969), a lightweight 'spy caper' movie, and the more challenging *The Man Who Haunted Himself* (1970). Directed by Basil Dearden, it gave Moore the opportunity to demonstrate greater versatility than the role of Simon Templar had allowed. In 2004, Moore said of *The Man Who Haunted Himself*: "It was one of the few times I was allowed to act... Many say my best role was in *The Man Who Haunted Himself*. Being a modest actor, I won't disagree."

 File:Roger Moore - 1971.jpg
Lew Grade lured Moore to star alongside Tony Curtis in *The Persuaders!*. The show featured the adventures of two millionaire playboys across Europe. Moore was paid the then-unheard-of sum of £1 million for a single series, making him the highest-paid television actor in the world. Lew Grade claimed in his autobiography *Still Dancing*, that Moore and Curtis "didn't hit it off all that well". Curtis refused to spend more time on set than was strictly necessary, while Moore was always willing to work overtime. According to the DVD commentary, neither Roger Moore, an uncredited co-producer, nor Robert S. Baker, the credited producer, ever had a contract other than a handshake with Lew Grade.

Despite its focus on the UK and US markets, *The Persuaders!* became more successful in other international markets. On its premiere on the ITV network, it was beaten in the ratings by repeats of *Monty Python's Flying Circus* on BBC One. It did however place in the Top 20 most-viewed television series in the UK throughout 1971. The lack of success in the US, where it had been sold to ABC, Curtis put down to its showing at the Saturday 10pm slot, but it was successful in continental Europe and Australia. In Germany, where the series was aired under the name *Die Zwei* ("The Two"), it became a hit through especially amusing dubbing which only barely used translations of the original dialogue.

### James Bond era (1973–1985)

#### *Live and Let Die* (1973)

 File:Roger Moore 3 Allan Warren.jpg
Due to his commitment to several television shows, in particular *The Saint*, Roger Moore was unavailable for the James Bond films for a considerable time. His participation in *The Saint* was as actor, producer, and director, and he also became involved in developing the series *The Persuaders!*. In 1964, he made a guest appearance as James Bond in the comedy series *Mainly Millicent*. Moore stated in his autobiography *My Word Is My Bond* (2008) that he had neither been approached to play the character in *Dr. No*, nor did he feel that he had ever been considered. Only after Sean Connery had declared in 1966 that he would not play Bond any longer did Moore become aware that he might be a contender for the role. After George Lazenby was cast in 1969's *On Her Majesty's Secret Service* and Connery was enticed back to the role of Bond again for *Diamonds Are Forever* (1971), Moore did not consider the possibility until it seemed clear that Connery had stepped down as Bond for good. At that point, Moore was approached, and he accepted producer Albert Broccoli's offer in August 1972. In his autobiography, Moore writes that he had to cut his hair and lose weight for the role. Although he resented having to make those changes, he was finally cast as James Bond in *Live and Let Die* (1973).

Moore then made *Gold* (1974), based on a novel by Wilbur Smith for producer Michael Klinger and director Peter R. Hunt. He was paid US$200,000 plus a percentage of the profits.

#### *The Man with the Golden Gun* (1974)

Moore made his second Bond film, *The Man with the Golden Gun* (1974), which was a hit, though less successful than *Live and Let Die*. It featured Christopher Lee as the main antagonist. Also appearing are Britt Ekland, Herve Villechaize, and Maud Adams. He then made a comedy *That Lucky Touch* (1975) which was a box office disaster. Moore made an Italian-shot action film *Street People* (1976), then went back to South Africa for another Klinger-Hunt movie from a Wilbur Smith novel, *Shout at the Devil* (1976), which was successful in Britain, though less so in the US. Lee Marvin was a main cast member. Ian Holm was also featured, as well as Barbara Parkins.[*citation needed*]

#### *The Spy Who Loved Me* (1977)

Moore returned for a third outing as Bond in *The Spy Who Loved Me* (1977), which was a massive box-office success. It also starred Barbara Bach, and Richard Kiel in his first appearance as the villain, Jaws. He returned to South Africa for a third action movie shot there, *The Wild Geese* (1978), produced by Euan Lloyd and directed by Andrew V. McLaglen. It was a sizeable hit in Britain and Europe but, like *Shout at the Devil*, less so in the US. The cast featured Richard Burton, who had top billing, and Richard Harris.

Moore played the lead in *Escape to Athena* (1979) partly financed by Lew Grade. It was a heist adventure set in war-time Greece, and stars Telly Savalas and David Niven, and features mostly American character actors, including Elliott Gould, Stefanie Powers, Richard Roundtree, Sonny Bono, and Italian actress Claudia Cardinale. Roger Moore (with top billing) plays a charming former Austrian antiquities dealer turned crooked camp commandant, asked to guard Greek antiquities desired by the Third Reich, and also guard the collection of archaeologists who are being forced to work to find and recover these objects, but he has other plans for the treasure he guards and for the people under his watch.

#### *Moonraker* (1979)

 File:Roger Moore at the sets of Sea Wolves.jpg
With the success of his fourth outing as Bond, *Moonraker* (1979), Moore followed it with an action film *North Sea Hijack* (1980) where Moore played a very un-Bond-like hero, opposite Anthony Perkins. The film was a box-office disappointment.

Better received was *The Sea Wolves* (1980), another World War Two adventure which reunited many of the crew from *The Wild Geese* including Euan Lloyd and McLaglen. It was based on the true story of a March 1943 event in British India and Portuguese Goa, in which a group of retired members of the Calcutta Light Horse, colonelled by David Niven's character, assist regular British Army operatives, played by Moore and Gregory Peck, in destroying German ships in neutral Mormugao harbour, all the time surrounded by German spies and Indian nationalist intrigue. Trevor Howard, Patrick Macnee, and Barbara Kellerman also co-star, with a who's-who lineup of British character actors.

Moore was in two all-star comedies: *Sunday Lovers* (1980), which flopped at the box office, and *The Cannonball Run* (1981), which was a hit. The latter featured an ensemble cast, including Jackie Chan, Burt Reynolds, Dean Martin, Dom DeLuise, Sammy Davis Jr, and Farrah Fawcett.

#### *For Your Eyes Only* (1981)

Moore returned for his fifth outing as Bond in *For Your Eyes Only* (1981).

#### *Octopussy* (1983)

Following the film, *For Your Eyes Only*, Moore expressed a desire to leave the role, and other actors were screen tested including James Brolin, but Moore was eventually enticed back for *Octopussy* (1983).

The circumstances around *Octopussy'*s release were highly unusual in that another James Bond film was being released in the same year. The Non-Eon production *Never Say Never Again* which featured his predecessor Sean Connery returning to the role of Bond, although not canon to his previous Eon Bond films. This led to the media dubbing the one-time situation the "Battle of the Bonds".

He made a cameo as Chief Inspector Clouseau, posing as a famous movie star, in *Curse of the Pink Panther* (1983) (for which he was credited as "Turk Thrust II"). Then he tried a thriller *The Naked Face* (1984), written and directed by Bryan Forbes.

#### *A View to a Kill* (1985)

Moore starred in his final Bond film, *A View to a Kill* (1985). He was the oldest actor to have played Bond – he was 45 in *Live and Let Die*, and 58 when he announced his retirement on 3 December 1985, having played the part for over 12 years. With 7 films Moore holds the record for playing Bond the most times in the Eon series but is tied with Sean Connery in number of times playing Bond when counting Connery's non-Eon appearance in *Never Say Never Again* (1983).

Moore's Bond was very different from the version created by Ian Fleming. Screenwriters such as George MacDonald Fraser provided scenarios in which Moore was cast as a seasoned, debonair playboy who would always have a trick or gadget in stock when he needed it. This was designed to serve the contemporary taste of the 1970s. Moore's version of Bond was also known for his sense of humour and witty one liners as Moore himself said, "My personality is different from previous Bonds. I'm not that cold-blooded-killer type. Which is why I play it mostly for laughs."

In 1987, he hosted *Happy Anniversary 007: 25 Years of James Bond*.

### Post-James Bond career (1986–2017)

 File:Roger Moore - Monte-Carlo Television Festival.JPG
Moore did not act on screen for five years after he stopped playing Bond; in 1990, he appeared in several films and in the writer-director Michael Feeney Callan's television series *My Riviera* and starred in the film *Bed & Breakfast* which was shot in 1989; and also had a large role in the 1996 film *The Quest*; in 1997, he starred as the Chief in *Spice World*. At the age of 73, he played a flamboyant homosexual man in *Boat Trip* (2002) with Cuba Gooding Jr.

The British satirical puppet show *Spitting Image* had a sketch in which their latex likeness of Moore, when asked to display emotions by an offscreen director, did nothing but raise an eyebrow; Moore himself stated that he thought the sketch was funny and took it in good humour. Indeed, he had always embraced the "eyebrows" gag wholeheartedly, and quipped that he "only had three expressions as Bond: right eyebrow raised, left eyebrow raised, and eyebrows crossed when grabbed by Jaws". *Spitting Image* continued the joke, featuring a Bond film spoof, *The Man with the Wooden Delivery*, with Moore's puppet receiving orders from Margaret Thatcher to kill Mikhail Gorbachev. Other comedy shows at that time ridiculed Moore's acting, with Rory Bremner once claiming to have had a death threat from one of his irate fans following one such routine.

In a nod to his 1960s TV show, Moore had a vocal cameo in *The Saint* (1997) as a radio newsreader as Simon Templar drives away at the end of the film. In the year 2000, he played the role of a secret agent in the Christmas special *Victoria Wood with All the Trimmings*, shown on BBC One on Christmas Day. Filming all his scenes in the London Eye, his mission was to eliminate another agent whose file photo looks like Pierce Brosnan. In 2002 he had a small cameo role in the German police procedural series *Tatort* (episode 506: "Schatten" – "Shadow", 28 July 2002) as a guest at the Bremen Sechs-Tagerennen.

In 2009, Moore appeared in an advertisements for the Post Office. In 2010, he provided the voice of a talking cat called Lazenby in the film *Cats & Dogs: The Revenge of Kitty Galore* which contained several references to, and parodies of, Bond films. In 2011, he co-starred in the film *A Princess for Christmas* with Katie McGrath and Sam Heughan, and in 2012, he took to the stage for a series of seven 'Evenings with' in UK theatres and, in November, guest-hosted *Have I Got News for You*. A slightly thinner faced Moore contributed to a charity song in 2017. His last on-screen performance was in 2017, a brief appearance near the end of the remake of 'The Saint'.

In 2015, Moore was named one of *GQ'*s 50 best-dressed British men. In 2015, he read Hans Christian Andersen's "The Princess and The Pea" for the children's fairy tales app GivingTales in aid of UNICEF with other British celebrities, including Michael Caine, Ewan McGregor, Joan Collins, Stephen Fry, Joanna Lumley, David Walliams, Charlotte Rampling, Paul McKenna, and Michael Ball.

## Humanitarian work

Moore's friend Audrey Hepburn had impressed him with her work for UNICEF, and consequently he became a UNICEF Goodwill Ambassador in August 1991. His character, Simon Templar, made a pitch for UNICEF near the end of "The Revolution Racket", airing 5 November 1964. He was the voice of Father Christmas or 'Santa' in the 2004 UNICEF cartoon *The Fly Who Loved Me*.

## Personal life

### Doorn Van Steyn

In 1946, aged 18, Moore married a fellow RADA student, the actress and ice skater Doorn Van Steyn (born Lucy Woodard), who was six years his senior; Moore and Van Steyn lived in Streatham with her family, but tension over money matters and her lack of confidence in his acting ability took their toll on the relationship, during which he allegedly suffered domestic abuse.

### Dorothy Squires

In 1952, Moore met the Welsh singer Dorothy Squires, who was 12 years his senior, and Van Steyn and Moore divorced the following year. Squires and Moore were married in New York. They lived in Bexley, Kent, after their wedding.

They moved to the United States in 1954 to develop their careers, but tension developed in their marriage due to their age difference and Moore's infatuation with starlet Dorothy Provine, and they moved back to the United Kingdom in 1961, where they resided in Sutton Coldfield, near Birmingham. Squires suffered a series of miscarriages during their marriage, and Moore later said the outcome of their marriage might have been different if they had been able to have children.

In their tempestuous relationship, Squires smashed a guitar over his head, and after learning of his affair with the Italian actress Luisa Mattioli, who became Moore's third wife, Moore said, "She threw a brick through my window. She reached through the glass and grabbed my shirt and she cut her arms doing it...The police came and they said, 'Madam, you're bleeding' and she said, 'It's my heart that's bleeding'." Squires intercepted letters from Mattioli to Moore and planned to include them in her autobiography, but the couple won injunctions against the publication in 1977, which led Squires to unsuccessfully sue them for loss of earnings. The numerous legal cases launched by Squires led her to be declared a vexatious litigant in 1987. Moore paid Squires's hospital bills after her cancer treatment in 1996; she died in 1998.

### Luisa Mattioli

 File:Roger Moore Cannes.jpg
In 1961, while filming *The Rape of the Sabine Women* in Italy, Moore left Squires for the Italian actress Luisa Mattioli. Squires refused to accept their separation, and sued Moore for loss of conjugal rights, but Moore refused the court's order to return to Squires in 28 days. Squires also smashed windows at a house in France where Moore and Mattioli were living, and unsuccessfully sued actor Kenneth More for libel, as Kenneth More had introduced Moore and Mattioli at a charity event as "Mr Roger Moore and his wife". Moore and Mattioli lived together until 1969, when Squires finally granted him a divorce, after they had been separated for seven years. At Moore's and Mattioli's marriage in April 1969 at the Caxton Hall in Westminster, London, a crowd of 600 people was outside, with women screaming his name.

Moore had three children with Mattioli: actress-daughter Deborah (born 1963) and two sons, Geoffrey and Christian. Geoffrey is also an actor, and appeared alongside his father in the films *Sherlock Holmes in New York* (1976) and *Fire, Ice and Dynamite* (1990). In later life, he co-founded Hush Restaurant in Mayfair, London, with Jamie Barber. Geoffrey and his wife Loulou have two daughters. Moore's younger son, Christian, is a film producer.

### Kristina "Kiki" Tholstrup

Moore and Mattioli separated in 1993 after Moore developed feelings for a Swedish-born Danish socialite, Kristina "Kiki" Tholstrup. Moore later described his prostate cancer diagnosis in 1993 as "life-changing", which led him to reassess his life and marriage. Mattioli and Tholstrup had long been friends, but Mattioli was scathing of her in the book she subsequently wrote about her relationship with Moore, *Nothing Lasts Forever*, describing how she felt betrayed by Tholstrup and discarded by Moore.

Moore remained silent on his divorce from Mattioli, later saying that he did not wish to hurt his children by "engaging in a war of words". Moore's children refused to speak to him for a period after the divorce, but they were later reconciled with their father. Mattioli refused to grant Moore a divorce until 2000, when a £10 million settlement was agreed. Moore subsequently married Tholstrup in 2002. Moore said that he loved Tholstrup as she was "organised", "serene", "loving", and "calm", saying, "I have a difficult life. I rely on Kristina totally. When we are travelling for my job, she is the one who packs. Kristina takes care of all that". Moore also said that his marriage to Tholstrup was "a tranquil relationship, there are no arguments". Tholstrup had a daughter, Christina Knudsen, from a previous relationship; Knudsen described her stepfather as a positive influence, saying, "I was in difficult relationships but that all changed" when her mother met Moore. Christina Knudsen died from cancer on 25 July 2016, at the age of 47; Moore posted on Twitter, "We are heartbroken" and "We were all with her, surrounding her with love, at the end".

## Political views

 File:Sir Roger Moore 3.tif
On politics, Moore stated he was a conservative and thought that conservatism is the way to run a country. Moore was described as a "lifelong" supporter of the Conservative Party and endorsed the party during the 2001 UK general election. However, Moore also expressed a reluctance to be seen as an overtly political figure and felt his work with UNICEF meant that he could not involve himself directly in politics.

In 2011, Moore expressed his support to Conservative Prime Minister David Cameron regarding his policy on the European Union, stating: "I think he's doing absolutely wonderfully well, despite the opposition from many members of his own party. Traitors, I call them. I mean any hardliner within the Conservative Party who speaks out against their leader. You should support your leader."

Moore also expressed support for Britain keeping the pound sterling as its national currency and was glad the British government had not joined the single EU currency, stating: "I would have been very upset if we'd had to take the Queen off our currency. They'd probably have to take her off the stamps and everything. I am British and I'm fiercely independent. And I think we should be independent, as Sean Connery is about Scotland."

In 2015, Moore criticised what he regarded as excessive political correctness within the film industry and felt that rewriting James Bond's sexuality, gender or ethnicity would be a mistake, arguing "it is not about being homophobic or, for that matter, racist – it is simply about being true to the character." Despite his conservative politics, Moore retained membership of the entertainment and media trade union BECTU (now part of Prospect) until his death, having joined as an apprentice animation technician before his acting career took off. At his death, he was the union's longest-tenured member. In 2007, Moore also voiced his support to workers from the Cadbury chocolate factory at Keynsham who were protesting against the plant's closure.

## Tax exile

Moore became a tax exile from the United Kingdom in 1978, originally to Switzerland, and divided his year between his four homes: an apartment in Monte Carlo, Monaco; a holiday house in the coastal Tuscan town of Castiglione della Pescaia, a chalet in Crans-Montana, Switzerland; and a home in the south of France. Moore became a resident of Monaco, having been appointed a Goodwill Ambassador of Monaco by Prince Albert II for his efforts in internationally promoting and publicising the principality. Moore was scathing of the Russian population in Monaco, saying, "I'm afraid we're overstuffed with Russians. All the restaurant menus are in Russian now."

Moore was vocal in his defence of his tax exile status, saying that in the 1970s, with taxes levied on top earners under the Labour government of James Callaghan, he had been urged by his "accountants, agents, and lawyers" to move abroad because, "At that point we were taxed up to 98% on unearned income, so you would never be able to save enough to ensure that you had any sort of livelihood if you didn't work." Moore said in 2011 that his decision to live abroad was "not about tax. That's a serious part of it. I come back to England often enough not to miss it, to see the changes, to find some of the changes good...I paid my taxes at the time that I was earning a decent income, so I've paid my due".

## Illness and death

Moore had a series of diseases during his childhood, including chickenpox, measles, mumps, double pneumonia and jaundice. He had an infection of his foreskin at the age of eight and underwent a circumcision, and had his appendix, tonsils, and adenoids removed.

Moore was a long-term sufferer of kidney stones and as a result was briefly hospitalised during the making of *Live and Let Die* in 1973 and again whilst filming the 1979 film *Moonraker*.

In 1993, Moore was diagnosed with prostate cancer and underwent successful treatment for the disease.

In 2003, Moore collapsed on stage while appearing on Broadway, and was fitted with a pacemaker to treat a potentially deadly slow heartbeat. He was diagnosed with type 2 diabetes in 2013. Some years before his final cancer illness, a tumour spot was found in the liver. Then, in 2017, during his cancer treatment period, he had a fall which badly injured the collarbone.

 File:The grave of Roger Moore in Monaco Cemetery 2 memolands (51511361870).jpg
Moore's family announced his death in Switzerland, on 23 May 2017, from cancer in his lung and liver. He died at his home in Crans-Montana, in the presence of his family. Former 007 actors Sean Connery, George Lazenby, Timothy Dalton and Pierce Brosnan, and then-current 007 Daniel Craig paid tribute to Moore. Moore is buried in Monaco Cemetery.

## Royal circles

Moore had friendships with some of Denmark's royal family; Prince Joachim and his then-wife Alexandra, Countess of Frederiksborg invited Moore and his wife Kiki to attend the christening of their youngest son, Prince Felix. In 2004 he attended the Wedding of Frederik, Crown Prince of Denmark, and Mary Donaldson. On 24 May 2008, Moore and his wife attended the wedding of Prince Joachim to his French fiancée Marie Cavallier.[*citation needed*]

Moore also had a long-standing friendship with Princess Lilian of Sweden, whom he first met on a visit to Stockholm for UNICEF. Moore's wife Kristina, who was born in Sweden, was already a friend of Princess Lilian's through mutual friends. In his autobiography, Moore recalled meeting the princess for tea and dinners whenever his wife and he visited Stockholm. He spoke of his recollections at the princess's memorial service at St Peter and St Sigfrid's Church in Stockholm, on 8 September 2013.

On 1 and 2 July 2011, Moore and his wife attended the wedding of Prince Albert of Monaco and Charlene Wittstock.

## Awards and legacy

Template:Quote box
Moore was appointed Commander of the Order of the British Empire (CBE) in the 1999 New Year Honours and was promoted to Knight Commander of the Order of the British Empire (KBE) in the 2003 Birthday Honours for charitable services, especially UNICEF and latterly Kiwanis International, which had dominated his public life for more than a decade. On being knighted, Moore said that the citation "meant far more to me than if I had got it for acting... I was proud because I received it on behalf of UNICEF as a whole and for all it has achieved over the years".

On 11 October 2007, three days before he turned 80, Moore was awarded a star on the Hollywood Walk of Fame for his work on television and in film. Attending the ceremony were family, friends, and Richard Kiel, with whom he had acted in *The Spy Who Loved Me* and *Moonraker*. Moore's star was the 2,350th star installed, and is appropriately located at 7007 Hollywood Boulevard.

On 28 October 2008, the French government appointed Moore a Commander of the Ordre des Arts et des Lettres. On 21 November 2012, Moore was awarded an honorary doctorate from the University of Hertfordshire for his outstanding contributions to the UK film and television industry for over 50 years, in particular film and television productions in Hertfordshire.

After his death, the Roger Moore Stage was opened at Pinewood Studios at a ceremony held in October 2017 to celebrate his life and work. His wife and family were in attendance along with Bond producers Michael G Wilson and Barbara Broccoli, and guests at the event included Joan Collins, Michael Caine, Stephen Fry, Tim Rice and Stefanie Powers.

In the 2018 film *My Dinner with Hervé*, Moore was portrayed by actor Mark Umbers.

**For his charity work**

* 2012: UNICEF's UK Lifetime Achievement Award
* 2007: Dag Hammarskjöld Inspiration Award (UNICEF)
* 2004: UNICEF's Audrey Hepburn Humanitarian Award
* 2003: German *Federal Cross of Merit* (Bundesverdienstkreuz) for his UNICEF workTemplate:Rp
* 2003: Knight Commander of the Order of the British Empire (KBE)
* 1999: Commander of the Order of the British Empire (CBE)

**Lifetime achievements awards**

* 2008: Commander of the French *National Order of Arts and Letters* (Ordre national des Arts et des Lettres)
* 2007: Hollywood Walk of Fame
* 2004: TELEKAMERA ("Tele Tydzień" Lifetime Achievement Award, Poland)
* 2002: Monte Carlo TV Festival (Lifetime Achievement Award)
* 2001: Lifetime achievement award (Filmfestival, Jamaica)
* 1997: Palm Springs film festival, USA, Lifetime Achievement Award
* 1995: TELE GATTO (Italian TV; Lifetime Achievement Award)
* 1991: GOLDEN CAMERA (German TV; lifetime achievement award)
* 1990: BAMBI (Lifetime Achievement Award from the German magazine BUNTE)

**For his acting**

* 1981: OTTO (Most popular Film Star; from German Magazine BRAVO)
* 1980: Golden Globe Henrietta Award for World Film Favorite – Male.
* 1980: Saturn Award (Most Popular International Performer)
* 1973: BAMBI (shared with Tony Curtis for "The Persuaders", from the German magazine BUNTE)
* 1973: BEST ACTOR IN TV, award from the French magazine TELE-7-JOURS, shared with Tony Curtis for "The Persuaders"
* 1967: ONDAS-AWARD (Spanish TV for "The Saint")
* 1967: OTTO (Most popular TV-star for "The Saint"; from German magazine BRAVO)

## In popular culture

* Roger Moore is contentiously credited with inspiring the Walls Magnum ice cream. In the 1960s, he reportedly said that his one wish would be for a choc ice on a stick. Walls created this product and sent one to Moore. They later launched the Magnum in 1989, which is now the world's top-selling ice cream brand.

## Publications

Moore's book about the filming of *Live and Let Die*, based on his diaries, titled *Roger Moore as James Bond: Roger Moore's Own Account of Filming Live and Let Die*, was published in London in 1973, by Pan Books. The book includes an acknowledgment to Sean Connery, with whom Moore was friends for many years: "I would also like to thank Sean Connery – *with* whom it would not have been possible."

Moore's autobiography *My Word is My Bond* (Template:ISBN) was published by Collins in the US, in November 2008 and by Michael O'Mara Books Ltd in the UK, on 2 October 2008 (Template:ISBN).

On 16 October 2012, *Bond on Bond* was published to tie in with the 50th anniversary of the James Bond films. The book, with many pictures, is based on Moore's own memories, thoughts, and anecdotes about all things 007, with some of the profits of the book going to UNICEF.

## Books

* Moore, Roger (1973). *Roger Moore as James Bond: Roger Moore's Own Account of Filming Live and Let Die*. ISBN 9780330236539.
* Moore, Roger (2008). *My Word Is My Bond: The Autobiography*. ISBN 9781843173878.
* (2012) *Bond on Bond: The Ultimate Book on 50 Years of Bond Movies*. ISBN 9781843178613.
* Moore, Roger (2014). *Last Man Standing: Tales from Tinseltown*. ISBN 9781782432074. "(published as *One Lucky Bastard* in the United States)"
* (2017) *À bientôt …*. ISBN 9781782438618.

## References

1. ↑ "Roger Moore, the longest-serving Bond" CNN, 23 May 2017; Retrieved 23 May 2017
2. ↑ "Sir Roger Moore: 'Sir Sean Connery is the best BondTemplate:'" BBC News, 10 October 2012; Retrieved 23 May 2017
3. ↑ 3.0 3.1 3.2 3.3 3.4 3.5 Roger Moore obituary: the star who gave James Bond a martini-dry wit. BFI.
4. ↑ Roger Moore Biography (1927–). FilmReference.com.
5. ↑ 5.0 5.1 5.2 Sellers, Robert. "Sir Roger Moore: Remembering the quintessential English actor forever linked with James Bond and The Saint", *The Independent*, 23 May 2017.
6. ↑ Genealogy Reviews: Families of the Famous: James Bond.
7. ↑ At war again. *Dr Challoner's Grammar School*.
8. ↑ 8.0 8.1 8.2 "Obituary: Sir Roger Moore", *BBC News*, 23 May 2017. (in en-GB)
9. ↑ Template:London Gazette
10. ↑ How it all began.... Combined Services Entertainment.
11. ↑ 11.0 11.1 Moore, Roger (2014). *Last Man Standing: Tales from Tinseltown*. London: Michael O'Mara Books. ISBN 978-1-78243-207-4.
12. ↑ "Roger Moore's life and career in pictures: from knitwear model to 007", *The Telegraph*.
13. ↑ "ERROL FLYNN ENDS PACT AT WARNERS", *The New York Times*, 20 March 1954.
14. ↑ Interrupted Melody. *American Film Institute*.
15. ↑ Maltin, Leonard (2005). *Leonard Maltin's Classic Movie Guide*. Penguin. ISBN 9780698197299.
16. ↑ Ivanhoe (1958). *ScreenOnline*. BFI.
17. ↑ *Ivanhoe* at Television Heaven.
18. ↑ 18.0 18.1 18.2 18.3 18.4 Sobczynski, Peter. Roger Moore: 1927–2017.
19. ↑ Moore answer to a June 2007 question on his official website.
20. ↑ 20.0 20.1 MAVERICK Mondays: "The Rivals" (1959). *The Horn Section*. Blogspot (8 September 2014).
21. ↑ 8 Cancelled TV Shows That Got A 'Twin Peaks'-Style Revival (8 October 2014).
22. ↑ "From Playing James Bond to His Humanitarian Work: Roger Moore's Life in Pictures", *People*.
23. ↑ 23.0 23.1 "The quintessential Englishman: what we learned from Sir Roger Moore", *The Telegraph*.
24. ↑  (2018) *Obituaries in the Performing Arts, 2017*. McFarland, page 284.
25. ↑ Gaughan, Gavin. "Harry Harrison: Writer of sci-fi novels who created the popular anti-hero the Stainless Steel Rat", *The Independent*, 25 August 2012. “...it was made as a two-part story in the ATV/ITC series starring Roger Moore (and, edited, released in cinemas outside Britain), but Harrison was not credited or remunerated for this; it had been "for a lump sum, no royalties".”
26. ↑ 26.0 26.1 26.2 26.3 Malone, Aubrey (20 September 2013). *The Defiant One:A Biography of Tony Curtis*, page 149. ISBN 978-0786475957.
27. ↑ *The Persuaders!* at Television Heaven --[[ ----------------------------------

Lua module implementing the Template loop detected: Template:Webarchive template.

A merger of the functionality of three templates: Template:Wayback, Template:Webcite and Template:Cite archives

]]

--[[--------------------------< D E P E N D E N C I E S >------------------------------------------------------
]]

require('Module:No globals');
local getArgs = require ('Module:Arguments').getArgs;

--[[--------------------------< F O R W A R D D E C L A R A T I O N S >--------------------------------------
]]

local categories = {}; -- category names
local config = {}; -- global configuration settings
local digits = {}; -- for i18n; table that translates local-wiki digits to western digits
local err\_warn\_msgs = {}; -- error and warning messages
local excepted\_pages = {};
local month\_num = {}; -- for i18n; table that translates local-wiki month names to western digits
local prefixes = {}; -- service provider tail string prefixes
local services = {}; -- archive service provider data from
local s\_text = {}; -- table of static text strings used to build final rendering
local uncategorized\_namespaces = {}; -- list of namespaces that we should not categorize
local uncategorized\_subpages = {}; -- list of subpages that should not be categorized

--[[--------------------------< P A G E S C O P E I D E N T I F I E R S >----------------------------------
]]

local non\_western\_digits; -- boolean flag set true when data.digits.enable is true
local this\_page = mw.title.getCurrentTitle();

local track = {}; -- Associative array to hold tracking categories
local ulx = {}; -- Associative array to hold template data

--[[--------------------------< S U B S T I T U T E >----------------------------------------------------------

Populates numbered arguments in a message string using an argument table.

]]

local function substitute (msg, args)
 return args and mw.message.newRawMessage (msg, args):plain() or msg;
end

--[[--------------------------< tableLength >-----------------------

Given a 1-D table, return number of elements

]]

local function tableLength(T)
 local count = 0
 for \_ in pairs(T) do count = count + 1 end
 return count
end

--[=[-------------------------< M A K E \_ W I K I L I N K >----------------------------------------------------

Makes a wikilink; when both link and display text is provided, returns a wikilink in the form D; if only
link is provided, returns a wikilink in the form L; if neither are provided or link is omitted, returns an
empty string.

]=]

local function make\_wikilink (link, display, no\_link)
 if nil == no\_link then
 if link and ( *~= link) then*
 if display and ( *~= display) then*
 return table.concat ({'', display, ''});
 else
 return table.concat ({'', link, ''});
 end
 end
 return display or *; -- link not set so return the display text*

 else -- no\_link
 if display and ( *~= display) then -- if there is display text*
 return display; -- return that
 else
 return link or *; -- return the target article name or empty string*
 end
 end
end

--[[--------------------------< createTracking >-----------------------

Return data in track[] ie. tracking categories

]]

local function createTracking()
 if not excepted\_pages[this\_page.fullText] then -- namespace:title/fragment is allowed to be categorized (typically this module's / template's testcases page(s))
 if uncategorized\_namespaces[this\_page.nsText] then
 return *; -- this page not to be categorized so return empty string*
 end
 for \_,v in ipairs (uncategorized\_subpages) do -- cycle through page name patterns
 if this\_page.text:match (v) then -- test page name against each pattern
 return *; -- this subpage type not to be categorized so return empty string*
 end
 end
 end

 local out = {};
 if tableLength(track) > 0 then
 for key, \_ in pairs(track) do -- loop through table
 table.insert (out, make\_wikilink (key)); -- and convert category names to links
 end
 end
 return table.concat (out); -- concat into one big string; empty string if table is empty

end

--[[--------------------------< inlineError >-----------------------

Critical error. Render output completely in red. Add to tracking category.

This function called as the last thing before abandoning this module

]]

local function inlineError (msg, args)
 track[categories.error] = 1
 return table.concat ({
 'Error in ', -- open the error message span
 config.tname, -- insert the local language template name
 ' template: ',
 substitute (msg, args), -- insert the formatted error message
 '.', -- close the span
 createTracking() -- add the category
 })
end

--[[--------------------------< inlineRed >-----------------------

Render a text fragment in red, such as a warning as part of the final output.
Add tracking category.

 ]]

local function inlineRed(msg, trackmsg)
 if trackmsg == "warning" then
 track[categories.warning] = 1;
 elseif trackmsg == "error" then
 track[categories.error] = 1;
 end

 return '' .. msg .. ''
end

--[[--------------------------< base62 >-----------------------

Convert base-62 to base-10
Credit: https://de.wikipedia.org/wiki/Modul:Expr

]]

local function base62( value )
 local r = 1 -- default return value is input value is malformed

 if value:match ('%W') then -- value must only be in the set [0-9a-zA-Z]
 return; -- nil return when value contains extraneous characters
 end

 local n = #value -- number of characters in value
 local k = 1
 local c
 r = 0
 for i = n, 1, -1 do -- loop through all characters in value from ls digit to ms digit
 c = value:byte( i, i )
 if c >= 48 and c <= 57 then -- character is digit 0-9
 c = c - 48
 elseif c >= 65 and c <= 90 then -- character is ascii a-z
 c = c - 55
 else -- must be ascii A-Z
 c = c - 61
 end
 r = r + c \* k -- accumulate this base62 character's value
 k = k \* 62 -- bump for next
 end -- for i

 return r
end

--[[--------------------------< D E C O D E \_ D A T E >--------------------------------------------------------

Given a date string, return it in iso format along with an indicator of the date's format. Except that month names
must be recognizable as legitimate month names with proper capitalization, and that the date string must match one
of the recognized date formats, no error checking is done here; return nil else

]]

local function decode\_date (date\_str)
 local patterns = {
 ['dmy'] = {'^(%d%d?) +([^%s%d]+) +(%d%d%d%d)$', 'd', 'm', 'y'}, -- %a does not recognize unicode combining characters used by some languages
 ['mdy'] = {'^([^%s%d]+) (%d%d?), +(%d%d%d%d)$', 'm', 'd', 'y'},
 ['ymd'] = {'^(%d%d%d%d) +([^%s%d]+) (%d%d?)$', 'y', 'm', 'd'}, -- not mos compliant at en.wiki but may be acceptible at other wikis
 };

 local t = {};

 if non\_western\_digits then -- this wiki uses non-western digits?
 date\_str = mw.ustring.gsub (date\_str, '%d', digits); -- convert this wiki's non-western digits to western digits
 end

 if date\_str:match ('^%d%d%d%d%-%d%d%-%d%d$') then -- already an iso format date, return western digits form
 return date\_str, 'iso';
 end

 for k, v in pairs (patterns) do
 local c1, c2, c3 = mw.ustring.match (date\_str, patterns[k][1]); -- c1 .. c3 are captured but we don't know what they hold

 if c1 then -- set on match
 t = { -- translate unspecified captures to y, m, and d
 [patterns[k][2]] = c1, -- fill the table of captures with the captures
 [patterns[k][3]] = c2, -- take index names from src\_pattern table and assign sequential captures
 [patterns[k][4]] = c3,
 };
 if month\_num[t.m] then -- when month not already a number
 t.m = month\_num[t.m]; -- replace valid month name with a number
 else
 return nil, 'iso'; -- not a valid date form because month not valid
 end

 return mw.ustring.format ('%.4d-%.2d-%.2d', t.y, t.m, t.d), k; -- return date in iso format
 end
 end
 return nil, 'iso'; -- date could not be decoded; return nil and default iso date
end

--[[--------------------------< makeDate >-----------------------

Given year, month, day numbers, (zero-padded or not) return a full date in df format
where df may be one of:
 mdy, dmy, iso, ymd

on entry, year, month, day are presumed to be correct for the date that they represent; all are required

in this module, makeDate() is sometimes given an iso-format date in year:
 makeDate (2018-09-20, nil, nil, df)
this works because table.concat() sees only one table member

]]

local function makeDate (year, month, day, df)
 local format = {
 ['dmy'] = 'j F Y',
 ['mdy'] = 'F j, Y',
 ['ymd'] = 'Y F j',
 ['iso'] = 'Y-m-d',
 };

 local date = table.concat ({year, month, day}, '-'); -- assemble year-initial numeric-format date (zero padding not required here)

 if non\_western\_digits then -- this wiki uses non-western digits?
 date = mw.ustring.gsub (date, '%d', digits); -- convert this wiki's non-western digits to western digits
 end

 return mw.getContentLanguage():formatDate (format[df], date);
end

--[[--------------------------< I S \_ V A L I D \_ D A T E >----------------------------------------------------

Returns true if date is after 31 December 1899 (why is 1900 the min year? shouldn't the internet's date-of-birth
be min year?), not after today's date, and represents a valid date (29 February 2017 is not a valid date). Applies
Gregorian leapyear rules.

all arguments are required

]]

local function is\_valid\_date (year, month, day)
 local days\_in\_month = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
 local month\_length;
 local y, m, d;
 local today = os.date ('\*t'); -- fetch a table of current date parts

 if not year or  *== year or not month or*  == month or not day or  *== day then*
 return false; -- something missing
 end

 y = tonumber (year);
 m = tonumber (month);
 d = tonumber (day);

 if 1900 > y or today.year < y or 1 > m or 12 < m then -- year and month are within bounds TODO: 1900?
 return false;
 end

 if (2==m) then -- if February
 month\_length = 28; -- then 28 days unless
 if (0==(y%4) and (0~=(y%100) or 0==(y%400))) then -- is a leap year?
 month\_length = 29; -- if leap year then 29 days in February
 end
 else
 month\_length=days\_in\_month[m];
 end

 if 1 > d or month\_length < d then -- day is within bounds
 return false;
 end
 -- here when date parts represent a valid date
 return os.time({['year']=y, ['month']=m, ['day']=d, ['hour']=0}) <= os.time(); -- date at midnight must be less than or equal to current date/time
end

--[[--------------------------< decodeWebciteDate >-----------------------

Given a URI-path to Webcite (eg. /67xHmVFWP) return the encoded date in df format

returns date string in df format - webcite date is a unix timestamp encoded as bae62
or the string 'query'

]]

local function decodeWebciteDate(path, df)

 local dt = {};
 local decode;

 dt = mw.text.split(path, "/")

 -- valid URL formats that are not base62

 -- http://www.webcitation.org/query?id=1138911916587475
 -- http://www.webcitation.org/query?url=http..&date=2012-06-01+21:40:03
 -- http://www.webcitation.org/1138911916587475
 -- http://www.webcitation.org/cache/73e53dd1f16cf8c5da298418d2a6e452870cf50e
 -- http://www.webcitation.org/getfile.php?fileid=1c46e791d68e89e12d0c2532cc3cf629b8bc8c8e

 if dt[2]:find ('query', 1, true) or
 dt[2]:find ('cache', 1, true) or
 dt[2]:find ('getfile', 1, true) or
 tonumber(dt[2]) then
 return 'query';
 end

 decode = base62(dt[2]); -- base62 string -> exponential number
 if not decode then
 return nil; -- nil return when dt[2] contains characters not in %w
 end
 dt = os.date('\*t', string.format("%d", decode):sub(1,10)) -- exponential number -> text -> first 10 characters (a unix timestamp) -> a table of date parts

 decode = makeDate (dt.year, dt.month, dt.day, 'iso'); -- date comparisons are all done in iso format with western digits
 if non\_western\_digits then -- this wiki uses non-western digits?
 decode = mw.ustring.gsub (decode, '%d', digits); -- convert this wiki's non-western digits to western digits
 end

 return decode;
end

--[[--------------------------< decodeWaybackDate >-----------------------

Given a URI-path to Wayback (eg. /web/20160901010101/http://example.com )
or Library of Congress Web Archives (eg. /all/20160901010101/http://example.com)
or UK Government Web Archive (eg. /ukgwa/20160901010101/http://example.com or /tna/20160901010101/http://example.com)

return the formatted date eg. "September 1, 2016" in df format
Handle non-digits in snapshot ID such as "re\_" and "-" and "\*"

 valid date string in df format - wayback date is valid (including the text string 'index' when date is '/\*/')
 empty string - wayback date is malformed (less than 8 digits, not a valid date)
 nil - wayback date is '/save/' or otherwise not a number

 second return value is an appropriate 'message' may or may not be formatted

]]

local function decodeWaybackDate(path, df)

 local msg, snapdate;

 snapdate = path:gsub ('^/web/', *):gsub ('^/all/',* ):gsub ('^/ukgwa/', *):gsub ('^/tna/',* ):gsub ('^/', *); -- remove leading /web/, /all/, /ukgwa/, /tna/, or /*
 snapdate = snapdate:match ('^[^/]+'); -- get timestamp
 if snapdate == "\*" then -- eg. /web/\*/http.., etc.
 return 'index'; -- return indicator that this url has an index date
 end

 snapdate = snapdate:gsub ('%a%a\_%d?$', *):gsub ('%-',* ); -- from date, remove any trailing "re\_", dashes

 msg = *;*
 if snapdate:match ('%\*$') then -- a trailing '\*' causes calendar display at archive .org
 snapdate = snapdate:gsub ('%\*$', *); -- remove so not part of length calc later*
 msg = inlineRed (err\_warn\_msgs.ts\_cal, 'warning'); -- make a message
 end

 if not tonumber(snapdate) then
 return nil, 'ts\_nan'; -- return nil (fatal error flag) and message selector
 end

 local dlen = snapdate:len();
 if dlen < 8 then -- we need 8 digits TODO: but shouldn't this be testing for 14 digits?
 return *, inlineRed (err\_warn\_msgs.ts\_short, 'error'); -- return empty string and error message*
 end

 local year, month, day = snapdate:match ('(%d%d%d%d)(%d%d)(%d%d)'); -- no need for snapdatelong here

 if not is\_valid\_date (year, month, day) then
 return *, inlineRed (err\_warn\_msgs.ts\_date, 'error'); -- return empty string and error message*
 end

 snapdate = table.concat ({year, month, day}, '-'); -- date comparisons are all done in iso format
 if 14 == dlen then
 return snapdate, msg; -- return date with message if any
 else
 return snapdate, msg .. inlineRed (err\_warn\_msgs.ts\_len, 'warning'); -- return date with warning message(s)
 end
end

--[[--------------------------< decodeArchiveisDate >-----------------------

Given an Archive.is "long link" URI-path (e.g. /2016.08.28-144552/http://example.com)
return the date in df format (e.g. if df = dmy, return 28 August 2016)
Handles "." and "-" in snapshot date, so 2016.08.28-144552 is same as 20160828144552

 valid date string in df format - archive.is date is valid (including the text string 'short link' when url is the short form)
 empty string - wayback date is malformed (not a number, less than 8 digits, not a valid date)
 nil - wayback date is '/save/'

 second return value is an appropriate 'message' may or may not be formatted

]]

local function decodeArchiveisDate(path, df)
 local snapdate

 if path:match ('^/%w+$') then -- short form url path is '/' followed by some number of base 62 digits and nothing else
 return "short link" -- e.g. http://archive.is/hD1qz
 end

 snapdate = mw.text.split (path, '/')[2]:gsub('[%.%-]', *); -- get snapshot date, e.g. 2016.08.28-144552; remove periods and hyphens*

 local dlen = string.len(snapdate)
 if dlen < 8 then -- we need 8 digits TODO: but shouldn't this be testing for 14 digits?
 return *, inlineRed (err\_warn\_msgs.ts\_short, 'error'); -- return empty string and error message*
 end

 local year, month, day = snapdate:match ('(%d%d%d%d)(%d%d)(%d%d)'); -- no need for snapdatelong here

 if not is\_valid\_date (year, month, day) then
 return *, inlineRed (err\_warn\_msgs.ts\_date, 'error'); -- return empty string and error message*
 end

 snapdate = table.concat ({year, month, day}, '-'); -- date comparisons are all done in iso format
 if 14 == dlen then
 return snapdate; -- return date
 else
 return snapdate, inlineRed (err\_warn\_msgs.ts\_len, 'warning'); -- return date with warning message
 end
 end

--[[--------------------------< serviceName >-----------------------

Given a domain extracted by mw.uri.new() (eg. web.archive.org) set tail string and service ID

]]

local function serviceName(host, no\_link)
 local tracking;
 local index;

 host = host:lower():gsub ('^web%.(.+)', '%1'):gsub ('^www%.(.+)', '%1'); -- lowercase, remove web. and www. subdomains

 if services[host] then
 index = host;
 else
 for k, \_ in pairs (services) do
 if host:find ('%f[%a]'..k:gsub ('([%.%-])', '%%%1')) then
 index = k;
 break;
 end
 end
 end

 if index then
 local out = {*}; -- empty string in [1] so that concatenated result has leading single space*
 ulx.url1.service = services[index][4] or 'other';
 tracking = services[index][5] or categories.other;
 -- build tail string
 if false == services[index][1] then -- select prefix
 table.insert (out, prefixes.at);
 elseif true == services[index][1] then
 table.insert (out, prefixes.atthe);
 else
 table.insert (out, services[index][1]);
 end

 table.insert (out, make\_wikilink (services[index][2], services[index][3], no\_link)); -- add article wikilink
 if services[index][6] then -- add tail postfix if it exists
 table.insert (out, services[index][6]);
 end

 ulx.url1.tail = table.concat (out, ' '); -- put it all together; result has leading space character

 else -- here when unknown archive
 ulx.url1.service = 'other';
 tracking = categories.unknown;
 ulx.url1.tail = table.concat ({*, prefixes.at, host, inlineRed (err\_warn\_msgs.unknown\_url, error)}, ' ');*
 end

 track[tracking] = 1
end

--[[--------------------------< parseExtraArgs >-----------------------

Parse numbered arguments starting at 2, such as url2..url10, date2..date10, title2..title10
 For example: Template loop detected: Template:Webarchive
 Three url arguments not in numeric sequence (1..4..7).
 Function only processes arguments numbered 2 or greater (in this case 4 and 7)
 It creates numeric sequenced table entries like:
 urlx.url2.url = <argument value for url4>
 urlx.url3.url = <argument value for url7>
 Returns the number of URL arguments found numbered 2 or greater (in this case returns "2")

 ]]

local function parseExtraArgs(args)

 local i, j, argurl, argurl2, argdate, argtitle

 j = 2
 for i = 2, config.maxurls do
 argurl = "url" .. i
 if args[argurl] then
 argurl2 = "url" .. j
 ulx[argurl2] = {}
 ulx[argurl2]["url"] = args[argurl]
 argdate = "date" .. i
 if args[argdate] then
 ulx[argurl2]["date"] = args[argdate]
 else
 ulx[argurl2]["date"] = inlineRed (err\_warn\_msgs.date\_miss, 'warning');
 end

 argtitle = "title" .. i
 if args[argtitle] then
 ulx[argurl2]["title"] = args[argtitle]
 else
 ulx[argurl2]["title"] = nil
 end
 j = j + 1
 end
 end

 if j == 2 then
 return 0
 else
 return j - 2
 end
end

--[[--------------------------< comma >-----------------------

Given a date string, return "," if it's MDY

]]

local function comma(date)
 return (date and date:match ('%a+ +%d%d?(,) +%d%d%d%d')) or *;*
end

--[[--------------------------< createRendering >-----------------------

Return a rendering of the data in ulx[][]

]]

local function createRendering()

 local displayfield
 local out = {};

 local index\_date, msg = ulx.url1.date:match ('(index)(.\*)'); -- when ulx.url1.date extract 'index' text and message text (if there is a message)
 ulx.url1.date = ulx.url1.date:gsub ('index.\*', 'index'); -- remove message

 if 'none' == ulx.url1.format then -- For Template:Wayback, Template:Webcite
 table.insert (out, '['); -- open extlink markup
 table.insert (out, ulx.url1.url); -- add url

 if ulx.url1.title then
 table.insert (out, ' ') -- the required space
 table.insert (out, ulx.url1.title) -- the title
 table.insert (out, ']'); -- close extlink markup
 table.insert (out, ulx.url1.tail); -- tail text
 if ulx.url1.date then
 table.insert (out, ' ('); -- open date text; TODO: why the html entity? replace with regular space?
 table.insert (out, 'index' == ulx.url1.date and s\_text.archive or s\_text.archived); -- add text
 table.insert (out, ' '); -- insert a space
 table.insert (out, ulx.url1.date); -- add date
 table.insert (out, ')'); -- close date text
 end
 else -- no title
 if index\_date then -- when url date is 'index'
 table.insert (out, table.concat ({' ', s\_text.Archive\_index, ']'})); -- add the index link label
 table.insert (out, msg or *); -- add date mismatch message when url date is /\*/ and |date= has valid date*
 else
 table.insert (out, table.concat ({' ', s\_text.Archived, '] '})); -- add link label for url has timestamp date (will include mismatch message if there is one)
 end
 if ulx.url1.date then
 if 'index' ~= ulx.url1.date then
 table.insert (out, ulx.url1.date); -- add date when data is not 'index'
 end
 table.insert (out, comma(ulx.url1.date)); -- add ',' if date format is mdy
 table.insert (out, ulx.url1.tail); -- add tail text
 else -- no date
 table.insert (out, ulx.url1.tail); -- add tail text
 end
 end

 if 0 < ulx.url1.extraurls then -- For multiple archive URLs
 local tot = ulx.url1.extraurls + 1
 table.insert (out, '.') -- terminate first url
 table.insert (out, table.concat ({' ', s\_text.addlarchives, ': '})); -- add header text

 for i=2, tot do -- loop through the additionals
 local index = table.concat ({'url', i}); -- make an index
 displayfield = ulx[index]['title'] and 'title' or 'date'; -- choose display text
 table.insert (out, '['); -- open extlink markup
 table.insert (out, ulx[index]['url']); -- add the url
 table.insert (out, ' '); -- the required space
 table.insert (out, ulx[index][displayfield]); -- add the label
 table.insert (out, ']'); -- close extlink markup
 table.insert (out, i==tot and '.' or ', '); -- add terminator
 end
 end
 return table.concat (out); -- make a big string and done

 else -- For Template:Cite archives
 if 'addlarchives' == ulx.url1.format then -- Multiple archive services
 table.insert (out, table.concat ({s\_text.addlarchives, ': '})); -- add header text
 else -- Multiple pages from the same archive
 table.insert (out, table.concat ({s\_text.addlpages, ' '})); -- add header text
 table.insert (out, ulx.url1.date); -- add date to header text
 table.insert (out, ': '); -- close header text
 end

 local tot = ulx.url1.extraurls + 1;
 for i=1, tot do -- loop through the additionals
 local index = table.concat ({'url', i}); -- make an index
 table.insert (out, '['); -- open extlink markup
 table.insert (out, ulx[index]['url']); -- add url
 table.insert (out, ' '); -- add required space

 displayfield = ulx[index]['title'];
 if 'addlarchives' == ulx.url1.format then
 if not displayfield then
 displayfield = ulx[index]['date']
 end
 else -- must be addlpages
 if not displayfield then
 displayfield = table.concat ({s\_text.Page, ' ', i});
 end
 end
 table.insert (out, displayfield); -- add title, date, page label text
 table.insert (out, ']'); -- close extlink markup
 table.insert (out, (i==tot and '.' or ', ')); -- add terminator
 end
 return table.concat (out); -- make a big string and done
 end
end

--[[--------------------------< P A R A M E T E R \_ N A M E \_ X L A T E >--------------------------------------

for internaltionalization, translate local-language parameter names to their English equivalents

TODO: return error message if multiple aliases of the same canonical parameter name are found?

returns two tables:
 new\_args - holds canonical form parameters and their values either from translation or because the parameter was already in canonical form
 origin - maps canonical-form parameter names to their untranslated (local language) form for error messaging in the local language

unrecognized parameters are ignored

]]

local function parameter\_name\_xlate (args, params, enum\_params)
 local name; -- holds modifiable name of the parameter name during evaluation
 local enum; -- for enumerated parameters, holds the enumerator during evaluation
 local found = false; -- flag used to break out of nested for loops
 local new\_args = {}; -- a table that holds canonical and translated parameter k/v pairs
 local origin = {}; -- a table that maps original (local language) parameter names to their canonical name for local language error messaging
 local unnamed\_params; -- set true when unsupported positional parameters are detected

 for k, v in pairs (args) do -- loop through all of the arguments in the args table
 name = k; -- copy of original parameter name

 if 'string' == type (k) then
 if non\_western\_digits then -- true when non-western digits supported at this wiki
 name = mw.ustring.gsub (name, '%d', digits); -- convert this wiki's non-western digits to western digits
 end

 enum = name:match ('%d+$'); -- get parameter enumerator if it exists; nil else

 if not enum then -- no enumerator so looking for non-enumnerated parameters
 -- TODO: insert shortcut here? if params[name] then name holds the canonical parameter name; no need to search further
 for pname, aliases in pairs (params) do -- loop through each parameter the params table
 for \_, alias in ipairs (aliases) do -- loop through each alias in the parameter's aliases table
 if name == alias then
 new\_args[pname] = v; -- create a new entry in the new\_args table
 origin [pname] = k; -- create an entry to make canonical parameter name to original local language parameter name
 found = true; -- flag so that we can break out of these nested for loops
 break; -- no need to search the rest of the aliases table for name so go on to the next k, v pair
 end
 end

 if found then -- true when we found an alias that matched name
 found = false; -- reset the flag
 break; -- go do next args k/v pair
 end
 end
 else -- enumerated parameters
 name = name:gsub ('%d$', '#'); -- replace enumeration digits with place holder for table search
 -- TODO: insert shortcut here? if num\_params[name] then name holds the canonical parameter name; no need to search further
 for pname, aliases in pairs (enum\_params) do -- loop through each parameter the num\_params table
 for \_, alias in ipairs (aliases) do -- loop through each alias in the parameter's aliases table
 if name == alias then
 pname = pname:gsub ('#$', enum); -- replace the '#' place holder with the actual enumerator
 new\_args[pname] = v; -- create a new entry in the new\_args table
 origin [pname] = k; -- create an entry to make canonical parameter name to original local language parameter name
 found = true; -- flag so that we can break out of these nested for loops
 break; -- no need to search the rest of the aliases table for name so go on to the next k, v pair
 end
 end

 if found then -- true when we found an alias that matched name
 found = false; -- reset the flag
 break; -- go do next args k/v pair
 end
 end
 end
 else
 unnamed\_params = true; -- flag for unsupported positional parameters
 end
 end -- for k, v
 return new\_args, origin, unnamed\_params;
end

--[[--------------------------< W E B A R C H I V E >----------------------------------------------------------

template entry point

]]

local function webarchive(frame)
 local args = getArgs (frame);

 local data = mw.loadData (table.concat ({ -- make a data module name; sandbox or live
 'Module:Webarchive/data',
 frame:getTitle():find('sandbox', 1, true) and '/sandbox' or  *-- this instance is ./sandbox then append /sandbox*
 }));
 categories = data.categories; -- fill in the forward declarations
 config = data.config;
 if data.digits.enable then
 digits = data.digits; -- for i18n; table of digits in the local wiki's language
 non\_western\_digits = true; -- use\_non\_western\_digits
 end
 err\_warn\_msgs = data.err\_warn\_msgs;
 excepted\_pages = data.excepted\_pages;
 month\_num = data.month\_num; -- for i18n; table of month names in the local wiki's language
 prefixes = data.prefixes;
 services = data.services;
 s\_text = data.s\_text;
 uncategorized\_namespaces = data.uncategorized\_namespaces;
 uncategorized\_subpages = data.uncategorized\_subpages;

 local origin = {}; -- holds a map of English to local language parameter names used in the current template; not currently used
 local unnamed\_params; -- boolean set to true when template call has unnamed parameters
 args, origin, unnamed\_params = parameter\_name\_xlate (args, data.params, data.enum\_params); -- translate parameter names in args to English

 local date, format, msg, udate, uri, url;
 local ldf = 'iso'; -- when there is no |date= parameter, render url dates in iso format

 if args.url and args.url1 then -- URL argument (first)
 return inlineError (data.crit\_err\_msgs.conflicting, {origin.url, origin.url1});
 end

 url = args.url or args.url1;

 if not url then
 return inlineError (data.crit\_err\_msgs.empty);
 end
 -- these iabot bugs perportedly fixed; removing these causes lua script error
--[[ -- at Template:Webarchive/testcases/Production; resolve that before deleting these tests
 if mw.ustring.find( url, "https://web.http", 1, true ) then -- track bug - TODO: IAbot bug; not known if the bug has been fixed; deferred
 track[categories.error] = 1;
 return inlineError (data.crit\_err\_msgs.iabot1);
 end
 if url == "https://web.archive.org/http:/" then -- track bug - TODO: IAbot bug; not known if the bug has been fixed; deferred
 track[categories.error] = 1;
 return inlineError (data.crit\_err\_msgs.iabot2);
 end
]]

 if not (url:lower():find ('^http') or url:find ('^//')) then
 return inlineError (data.crit\_err\_msgs.invalid\_url );
 end

 ulx.url1 = {}
 ulx.url1.url = url

 ulx.url1.extraurls = parseExtraArgs(args)

 local good = false;
 good, uri = pcall (mw.uri.new, ulx.url1.url); -- get a table of uri parts from this url; protected mode to prevent lua error when ulx.url1.url is malformed

 if not good or nil == uri.host then -- abandon when ulx.url1.url is malformed
 return inlineError (data.crit\_err\_msgs.invalid\_url);
 end

 serviceName(uri.host, args.nolink)

 if args.date and args.date1 then -- Date argument
 return inlineError (data.crit\_err\_msgs.conflicting, {origin.date, origin.date1});
 end

 date = args.date or args.date1;
 date = date and date:gsub (' +', ' '); -- replace multiple spaces with a single space

 if date and config.verifydates then
 if '\*' == date then
 date = 'index';
 ldf = 'iso'; -- set to default format
 elseif 'mdy' == date then
 date = nil; -- if date extracted from URL,
 ldf = 'mdy'; -- then |date=mdy overrides iso
 elseif 'dmy' == date then
 date = nil; -- if date extracted from URL,
 ldf = 'dmy'; -- then |date=dmy overrides iso
 elseif 'ymd' == date then
 date = nil; -- if date extracted from URL,
 ldf = 'ymd'; -- then |date=ymd overrides iso
 else
 date, ldf = decode\_date (date); -- get an iso format date from date and get date's original format
 end
 end

 if 'wayback' == ulx.url1.service or 'locwebarchives' == ulx.url1.service or 'ukgwa' == ulx.url1.service then
 if date then
 if config.verifydates then
 if ldf then
 udate, msg = decodeWaybackDate (uri.path); -- get the url date in iso format and format of date in |date=; 'index' when wayback url date is \*
 if not udate then -- this is the only 'fatal' error return
 return inlineError (data.crit\_err\_msgs[msg]);
 end

 if udate ~= date then -- date comparison using iso format dates
 date = udate;
 msg = table.concat ({
 inlineRed (err\_warn\_msgs.mismatch, 'warning'), -- add warning message
 msg, -- add message if there is one
 });
 end
 end
 end
 else -- no |date=
 udate, msg = decodeWaybackDate (uri.path);

 if not udate then -- this is the only 'fatal' error return
 return inlineError (data.crit\_err\_msgs[msg]);
 end

 if  *== udate then*
 date = nil; -- unset
 else
 date = udate;
 end
 end

 elseif 'webcite' == ulx.url1.service then
 if date then
 if config.verifydates then
 if ldf then
 udate = decodeWebciteDate (uri.path); -- get the url date in iso format
 if 'query' ~= udate then -- skip if query
 if udate ~= date then -- date comparison using iso format dates
 date = udate;
 msg = table.concat ({
 inlineRed (err\_warn\_msgs.mismatch, 'warning'),
 });
 end
 end
 end
 end
 else
 date = decodeWebciteDate( uri.path, "iso" )
 if date == "query" then
 date = nil; -- unset
 msg = inlineRed (err\_warn\_msgs.date\_miss, 'warning');
 elseif not date then -- invalid base62 string
 date = inlineRed (err\_warn\_msgs.date1, 'error');
 end
 end

 elseif 'archiveis' == ulx.url1.service then
 if date then
 if config.verifydates then
 if ldf then
 udate, msg = decodeArchiveisDate (uri.path) -- get the url date in iso format
 if 'short link' ~= udate then -- skip if short link
 if udate ~= date then -- date comparison using iso format dates
 date = udate;
 msg = table.concat ({
 inlineRed (err\_warn\_msgs.mismatch, 'warning'), -- add warning message
 msg, -- add message if there is one
 });
 end
 end
 end
 end
 else -- no |date=
 udate, msg = decodeArchiveisDate( uri.path, "iso" )
 if udate == "short link" then
 date = nil; -- unset
 msg = inlineRed (err\_warn\_msgs.date\_miss, 'warning');
 elseif  *== udate then*
 date = nil; -- unset
 else
 date = udate;
 end
 end

 else -- some other service
 if not date then
 msg = inlineRed (err\_warn\_msgs.date\_miss, 'warning');
 end
 end

 if 'index' == date then
 ulx.url1.date = date .. (msg or *); -- create index + message (if there is one)*
 elseif date then
 ulx.url1.date = makeDate (date, nil, nil, ldf) .. (msg or *); -- create a date in the wiki's local language + message (if there is one)*
 else
 ulx.url1.date = msg;
 end

 format = args.format; -- Format argument

 if not format then
 format = "none"
 else
 for k, v in pairs (data.format\_vals) do -- |format= accepts two specific values loop through a table of those values
 local found; -- declare a nil flag
 for \_, p in ipairs (v) do -- loop through local language variants
 if format == p then -- when |format= value matches
 format = k; -- use name from table key
 found = true; -- declare found so that we can break out of outer for loop
 break; -- break out of inner for loop
 end
 end

 if found then
 break;
 end
 end

 if format == "addlpages" then
 if not ulx.url1.date then
 format = "none"
 end
 elseif format == "addlarchives" then
 format = "addlarchives"
 else
 format = "none"
 end
 end
 ulx.url1.format = format

 if args.title and args.title1 then -- Title argument
 return inlineError (data.crit\_err\_msgs.conflicting, {origin.title, origin.title1});
 end

 ulx.url1.title = args.title or args.title1;

 local rend = createRendering()
 if not rend then
 return inlineError (data.crit\_err\_msgs.unknown);
 end

 return rend .. ((unnamed\_params and inlineRed (err\_warn\_msgs.unnamed\_params, 'warning')) or *) .. createTracking();*

end

--[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------
]]

return {webarchive = webarchive};
28. ↑ Classic TV – Old UK TV Show Ratings – 70s- FiftiesWeb.
29. ↑ 50 Years of James Bond: Roger Moore, Seven Times 007. BBC America (19 October 2012). “"[Moore] played James Bond in 1964 on TV opposite British actress Millicent Martin in a guest appearance on her BBC comedy show, Mainly Millicent."”
30. ↑ 30.0 30.1 "Roger Moore: From Saint to 007, Entertainment News & Top Stories".
31. ↑ *British Culture and Society in the 1970s: The Lost Decade* edited by Laurel Forster, Sue Harper
32. ↑ Weber, Bruce. "Richard Kiel Dies at 74; Played Jaws in Bond Films", 11 September 2014.
33. ↑ "The Global Film: Will It Play in Uruguay?: The Global Film". By John M. Wilson. *The New York Times*, 26 November 1978: D1.
34. ↑ "If a film chews gum, it's American", *The Guardian* (1959–2003) [London (UK)] 5 July 1980: 9.
35. ↑ James Bond: James Brolin was set to REPLACE Roger Moore in Octopussy. Express Newspapers (8 April 2020).
36. ↑ "James Bond: 12(!) actors, and 26 movies in 54 years", *the web log of Evert*. (in en-GB)
37. ↑ "Roger Moore: debonair 007 played Bond role for laughs", *The Australian*.
38. ↑ 38.00 38.01 38.02 38.03 38.04 38.05 38.06 38.07 38.08 38.09 38.10 38.11 38.12 38.13 38.14 38.15 38.16 38.17 38.18 38.19 38.20 38.21 38.22 38.23 38.24 38.25 38.26 38.27 38.28 38.29 38.30 38.31 38.32 38.33 38.34 38.35 38.36 38.37 38.38 38.39 38.40 38.41 38.42 Roger Moore. BFI.
39. ↑ Champlin, Charles. "Roger Moore and Talia Shire Take Sequel Break", *Los Angeles Times*, 17 September 1989.
40. ↑ "6 memorable Roger Moore roles including James Bond 007", *New York Daily News*.
41. ↑ Bremner, Rory *Beware of Imitations* (1999)
42. ↑ Episode 6 Have I Got News for You, Series 44 Episode 6 of 11. BBC One.
43. ↑ "50 Best Dressed Men in Britain 2015", *GQ*, 5 January 2015.
44. ↑ "Roger Moore backs children's fairy tales app in aid of Unicef", *The Guardian*, 18 June 2015.
45. ↑ Sir Roger Moore: Goodwill Ambassador. Unicef People (13 August 2012).
46. ↑ **Script error: No such module "citation/CS1".**
47. ↑ The Fly Who Loved Me (directed by Dan Chambers). Unicef.org.uk.
48. ↑ 48.0 48.1 48.2 McGrath, Nick. "Roger Moore: 'I love cash. The sheer luxury of crispy £1 notes'", *The Telegraph*, 30 September 2012.
49. ↑ 49.0 49.1 Roger Moore (10 October 2009). *My Word is My Bond: The Autobiography*. Michael OMara, page 36–. ISBN 978-1-84317-419-6.
50. ↑ Sir Roger Moore: James Bond actor 'beaten up by first two wives' *The Telegraph*, 12 September 2012
51. ↑ 51.0 51.1 51.2 51.3 51.4 51.5 "Obituary: Dorothy Squires", *The Times*, London, 15 April 1998, pg. 21
52. ↑ May, Luke. Sir Roger Moore, former James Bond actor, Bexley and Tunbridge Wells resident, dies aged 89 from cancer. *Kentnews.co.uk*. Archant.
53. ↑ Retrieved May 2017
54. ↑ 54.0 54.1 "Moore pays for Squires operation." *The Times*, London, 31 May 1996, pg. 6
55. ↑ 55.0 55.1 55.2 55.3 55.4 55.5 Davies, Hugh. "Roger Moore pays wife £10m in divorce deal", *The Telegraph*, 10 October 2000.
56. ↑ "News in Brief", *The Times*, London, 12 April 1969, pg. 3
57. ↑ 57.0 57.1 57.2 57.3 57.4 57.5 57.6 Cavendish, Lucy. "Roger Moore Saint or Sinner?", *London Evening Standard*, 17 November 2003.
58. ↑ Anstead, Mark. "Yes, the name's bonds", *The Guardian*, 10 August 2002.
59. ↑ Christian Moore (IV).
60. ↑ James Bone. "Roger Moore's £10m divorce." *The Times*, London, 10 October 2000
61. ↑ 61.0 61.1 Lee, Veronica. "Roger Moore interview: 'If I had 24 hours to live, I'd make a dry martini'", *The Telegraph*, 26 October 2003.
62. ↑ Roger Moore's Daughter, Christina Knudsen, Dies Aged 47 – Huffington Post UK
63. ↑ Sir Roger Moore on Twitter.
64. ↑ Sir Roger Moore on Twitter.
65. ↑ "'Sean played Bond as a killer – I played him as a lover': Roger Moore's best quotes", *The Telegraph*, 23 May 2017.
66. ↑ "Campaigning with the stars", *BBC News*, 14 May 2001.
67. ↑ 67.0 67.1 Parfitt, Tom (23 May 2017). REVEALED: Sir Roger Moore snubbed Theresa May request to appear at campaign rally (en).
68. ↑ "Obituary: Sir Roger Moore", *BBC News*, 23 May 2017. (in en-GB)
69. ↑ Sir Roger Moore: 'I've paid my dues in taxes'. *NME* (11 December 2011).
70. ↑ Roger Moore slams the Tory party traitors (en-gb).
71. ↑ Roger Moore: Bond Can't Be A Woman Or A Gay Man (en-GB).
72. ↑ bangshowbiz.com. "Sir Roger Moore: I like Bond crumpet", *The Washington Post*, 12 June 2015. (in en-US)
73. ↑ BECTU has expressed sadness at the death of Sir Roger Moore, aged 89 (24 May 2017).
74. ↑ McCormick, Ken (24 May 2017). Do you remember when Sir Roger Moore backed Keynsham workers in their fight to save their factory? (en).
75. ↑ 75.0 75.1 75.2 75.3 Julia Llewelyn Smith. "Sir Roger Moore: 'I can't drink martinis any more – but life is bliss'", *The Telegraph*, 30 April 2014.
76. ↑ Monaco Ambassador's Club – News. *Monaco Ambassadors Club*. Prince's Palace of Monaco (12 June 2012).
77. ↑ "Sir Roger Moore defends decision to live in Monaco and Switzerland", *The Scotsman*, 12 December 2011.
78. ↑ Gordon, Bryony. "Sir Roger Moore: I'm the worst James Bond, they say", *The Telegraph*, 24 September 2008.
79. ↑ theguardian.com
80. ↑ Chase, Chris. "At the Movies: Roger Moore is anybody's replacement", *The New York Times*, 26 June 1981.
81. ↑ "Roger Moore: 'It's all a bit of a joke'", *Sunday Star Times*, 14 November 2008.
82. ↑ McKay, Sinclair. "Review: Roger Moore: My Word Is My Bond by Roger Moore", *The Telegraph*, 11 October 2008. ; "Bond star Sir Roger Moore gets asked strange stuff", *Newsbeat*, BBC News, 30 March 2015.
83. ↑ Moore, Roger (1973). *Roger Moore As James Bond: Roger Moore's Own Account of Filming 'Live and Let Die'*. London: Pan Books, page 15, 46. ISBN 9780330236539.
84. ↑ Moore, Roger (2012). *Bond on Bond: Reflections on 50 Years of James Bond Movies*. Guilford, Conn.: Lyons Press, page 141. ISBN 9780762782819.
85. ↑ France, Lisa. "Roger Moore, '007' actor, dies at 89", *CNN*, 23 May 2017.
86. ↑ "Roger Moore collapses on stage", *The Guardian*, 9 May 2003.
87. ↑ "Sir Roger Moore – Nobody Does It Better", BBC Radio 2, 26 December 2017.
88. ↑ 88.0 88.1 "Roger Moore's daughter – My kind, naughty, funny dad", *The Australian Women's Weekly*, 9 November 2017.
89. ↑ "Sir Roger Moore, James Bond actor, dies at age 89", *BBC News*, 23 May 2017.
90. ↑ Family tweet re death of Sir Roger Moore (23 May 2017).
91. ↑ Cite error: Invalid `<ref>` tag; no text was provided for refs named `nzz`
92. ↑ Six Royals and 007: Memorial Service for Princess Lilian.
93. ↑ Barchfield, Jenny. "Monaco palace releases wedding guest list", *Forbes*, 30 June 2011. [dead link]
94. ↑ Template:London Gazette
95. ↑ Template:London Gazette
96. ↑ "Sir Roger Moore, James Bond actor, dies of cancer aged 89", *The Telegraph*, 23 May 2017.
97. ↑ Roger Moore Official Site.
98. ↑ "Roger Moore, Commandeur des Arts et des Lettres", 28 October 2008. (in fr)
99. ↑ University of Hertfordshire News.
100. ↑ 100.0 100.1 "Roger Moore stage opened at Pinewood Studios", *BBC News*, 21 December 2017.
101. ↑ Statement by UNICEF Executive Director Anthony Lake on the Life of Goodwill Ambassador Sir Roger Moore. UNICEF (23 May 2017).
102. ↑ Sir Roger Moore receives Dag Hammarskjöld Inspiration Award for his work with UNICEF (25 October 2017).
103. ↑ "Katy Perry gets charity award for her work with children from Hillary Clinton", *Newsbeat*, BBC News, 30 November 2016.
104. ↑  (10 February 2003) *Actor Roger Moore Receives the Federal Service Fotografia de Noticias*. Getty Images.
105. ↑ Winners & Nominees Henrietta Award (World Film Favorites). *Golden Globe Awards*. Hollywood Foreign Press Association.
106. ↑ Smith, Neil. "Seven celebs who invented things", *BBC News*, 7 June 2017. (in en-GB)
107. ↑ Roger Moore is shooting "Christmas at Castlebury Hall" in Romania. *Nine O'Clock* (8 March 2011).
108. ↑ Roger Moore's 1973 Book About The Making Of LIVE AND LET DIE Is Straight-Up Bonkers (21 April 2017).
109. ↑ Roger Moore's official website (12 January 2010).
110. ↑ Bond on Bond Review. mi6-hq.com.

## External links

* Official website
* Roger Moore at Wikipedia

* Roger Moore at James Bond Wiki
* Roger Moore at the Internet Movie Database
* Roger Moore interview. ITV Cymru/Wales Archive (1963).
* People: Roger Moore. UNICEF. Archived from the original on March 5, 2009.

**Soundtracks:** *Moonraker*