PageRenderTime 43ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/plugins/regservices/regservices.class.php

http://litepublisher.googlecode.com/
PHP | 125 lines | 98 code | 19 blank | 8 comment | 13 complexity | 7e80531e96c228740edf96d5f4b27973 MD5 | raw file
Possible License(s): AGPL-1.0, GPL-3.0
  1. <?php
  2. /**
  3. * Lite Publisher
  4. * Copyright (C) 2010 - 2013 Vladimir Yushko http://litepublisher.ru/ http://litepublisher.com/
  5. * Dual licensed under the MIT (mit.txt)
  6. * and GPL (gpl.txt) licenses.
  7. **/
  8. class tregservices extends titems {
  9. public static function i() {
  10. return getinstance(__class__);
  11. }
  12. protected function create() {
  13. $this->dbversion = false;
  14. parent::create();
  15. $this->basename = 'regservices' . DIRECTORY_SEPARATOR . 'index';
  16. $this->data['dirname'] = '';
  17. $this->data['url'] = '/admin/regservice.htm';
  18. $this->data['widget'] = '';
  19. $this->data['widget_title'] = '';
  20. }
  21. public function add(tregservice $service) {
  22. $this->lock();
  23. $this->items[$service->name] = get_class($service);
  24. $service->save();
  25. $this->update_widget();
  26. $this->unlock();
  27. }
  28. public function update_widget() {
  29. $widget = '';
  30. $url = litepublisher::$site->url . $this->url . litepublisher::$site->q . 'id';
  31. foreach ($this->items as $name => $classname) {
  32. $service = getinstance($classname);
  33. if ($service->valid()) {
  34. $widget .= "<a href=\"$url=$name&backurl=\" class=\"$name-regservice\" title=\"$service->title\"></a>";
  35. }
  36. }
  37. $widget = str_replace('&', '&amp;', $widget);
  38. $this->widget = $this->widget_title . sprintf('<div class="regservices">%s</div>', $widget);
  39. $this->save();
  40. $admin = tadminlogin::i();
  41. $admin->widget = $this->widget;
  42. $admin->save();
  43. $admin = tadminreguser::i();
  44. $admin->widget = $this->widget;
  45. $admin->save();
  46. $tc = ttemplatecomments::i();
  47. if ($i = strpos($tc->regaccount, $this->widget_title)) {
  48. $tc->regaccount = trim(substr($tc->regaccount, 0, $i));
  49. }
  50. $tc->regaccount .= "\n" . $this->widget;
  51. $tc->save();
  52. }
  53. public function request($arg) {
  54. $this->cache = false;
  55. Header( 'Cache-Control: no-cache, must-revalidate');
  56. Header( 'Pragma: no-cache');
  57. // hook for clien disabled cookies
  58. if (!isset($_GET['cookietest'])) {
  59. $backurl = !empty($_GET['backurl']) ? $_GET['backurl'] : (!empty($_GET['amp;backurl']) ? $_GET['amp;backurl'] : (isset($_COOKIE['backurl']) ? $_COOKIE['backurl'] : ''));
  60. if ($backurl) setcookie('backurl', $backurl, time() + 8 * 3600, litepublisher::$site->subdir . '/', false);
  61. setcookie('litepubl_cookie_test', 'test', time() + 8000, litepublisher::$site->subdir . '/', false);
  62. return litepublisher::$urlmap->redir(litepublisher::$urlmap->url . '&cookietest=true');
  63. }
  64. if (!isset($_COOKIE['litepubl_cookie_test'])) return 403;
  65. setcookie('litepubl_cookie_test', '', 0, litepublisher::$site->subdir . '/', false);
  66. $id = empty($_GET['id']) ? 0 : $_GET['id'];
  67. if (!isset($this->items[$id])) return 404;
  68. $service = getinstance($this->items[$id]);
  69. if (!$service->valid()) return 403;
  70. $url = $service->getauthurl();
  71. if (!$url) return 403;
  72. return litepublisher::$urlmap->redir($url);
  73. }
  74. public function oncomuser(array $values, $comfirmed) {
  75. //ignore $comfirmed, always return redirect
  76. $form = tcommentform::i();
  77. if ($err = $form->processcomuser($values)) return $err;
  78. $email = strtolower(trim($values['email']));
  79. $host = substr($email, strpos($email, '@') + 1);
  80. switch ($host) {
  81. case 'gmail.com':
  82. $name = 'google';
  83. break;
  84. case 'yandex.ru':
  85. $name = 'yandex';
  86. break;
  87. case 'mail.ru':
  88. case 'inbox.ru':
  89. case 'list.ru':
  90. case 'bk.ru':
  91. $name = 'mailru';
  92. break;
  93. default:
  94. return false;
  95. }
  96. if (!isset($this->items[$name])) return false;
  97. $service = getinstance($this->items[$name]);
  98. if (!$service->valid) return false;
  99. $service->sessdata['comuser'] = $values;
  100. $url = $service->getauthurl();
  101. if (!$url) return false;
  102. return $form->sendresult($url, array(
  103. ini_get('session.name') => $service->session_id
  104. ));
  105. }
  106. }//class