Union.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. <?php
  2. /**
  3. * [Discuz!] (C)2001-2099 Comsenz Inc.
  4. * This is NOT a freeware, use is subject to license terms
  5. *
  6. * $Id: Union.php 25702 2011-11-18 04:28:41Z yexinhao $
  7. */
  8. if(!defined('IN_DISCUZ')) {
  9. exit('Access Denied');
  10. }
  11. class Cloud_Service_Server_Union extends Cloud_Service_Server_Restful {
  12. protected static $_instance;
  13. public static function getInstance() {
  14. if (!(self::$_instance instanceof self)) {
  15. self::$_instance = new self();
  16. }
  17. return self::$_instance;
  18. }
  19. public function onUnionAddAdvs($advs) {
  20. $result = array();
  21. if (is_array($advs)) {
  22. foreach($advs as $advid => $adv) {
  23. $data = $this->_addAdv($adv);
  24. if($data === true) {
  25. $result['succeed'][$advid] = $advid;
  26. } else {
  27. $result['failed'][$advid] = $data;
  28. }
  29. }
  30. require_once libfile('function/cache');
  31. updatecache('advs');
  32. updatecache('setting');
  33. } else {
  34. $result['error'] = 'no adv';
  35. }
  36. return $result;
  37. }
  38. protected function _addAdv($adv) {
  39. global $_G;
  40. foreach($adv as $k => $v) {
  41. $_GET[''.$k] = $v;
  42. }
  43. $type = $_GET['type'];
  44. $advlibfile = libfile('adv/'.$type, 'class');
  45. if (file_exists($advlibfile)) {
  46. require_once $advlibfile;
  47. } else {
  48. return 'err_1';
  49. }
  50. $advclass = 'adv_'.$type;
  51. $advclass = new $advclass;
  52. $advnew = $_GET['advnew'];
  53. $parameters = !empty($_GET['parameters']) ? $_GET['parameters'] : array();
  54. if(@in_array('custom', $advnew['targets'])) {
  55. $targetcustom = explode(',', $advnew['targetcustom']);
  56. $advnew['targets'] = array_merge($advnew['targets'], $targetcustom);
  57. }
  58. $advclass->setsetting($advnew, $parameters);
  59. $advnew['starttime'] = $advnew['starttime'] ? strtotime($advnew['starttime']) : 0;
  60. $advnew['endtime'] = $advnew['endtime'] ? strtotime($advnew['endtime']) : 0;
  61. if(!$advnew['title']) {
  62. return 'err_2';
  63. } elseif(strlen($advnew['title']) > 50) {
  64. return 'err_3';
  65. } elseif(!$advnew['style']) {
  66. return 'err_4';
  67. } elseif(!$advnew['targets']) {
  68. return 'err_5';
  69. } elseif($advnew['endtime'] && ($advnew['endtime'] <= TIMESTAMP || $advnew['endtime'] <= $advnew['starttime'])) {
  70. return 'err_6';
  71. } elseif(($advnew['style'] == 'code' && !$advnew['code']['html'])
  72. || ($advnew['style'] == 'text' && (!$advnew['text']['title'] || !$advnew['text']['link']))
  73. || ($advnew['style'] == 'image' && (!$_FILES['advnewimage'] && !$_GET['advnewimage'] || !$advnew['image']['link']))
  74. || ($advnew['style'] == 'flash' && (!$_FILES['advnewflash'] && !$_GET['advnewflash'] || !$advnew['flash']['width'] || !$advnew['flash']['height']))) {
  75. return 'err_7';
  76. }
  77. $advid = C::t('common_advertisement')->insert(array('available' => 1, 'type' => $type), true);
  78. if($advnew['style'] == 'image' || $advnew['style'] == 'flash') {
  79. $advnew[$advnew['style']]['url'] = $_GET['advnew'.$advnew['style']];
  80. }
  81. $advnew['displayorder'] = isset($advnew['displayorder']) ? implode("\t", $advnew['displayorder']) : '';
  82. $advnew['code'] = $this->_encodeAdvCode($advnew);
  83. $advnew['parameters'] = serialize(array_merge(is_array($parameters) ? $parameters : array(), array('style' => $advnew['style']), $advnew['style'] == 'code' ? array() : $advnew[$advnew['style']], array('html' => $advnew['code']), array('displayorder' => $advnew['displayorder'])));
  84. C::t('common_advertisement')->update($advid, array(
  85. 'title' => $advnew['title'],
  86. 'targets' => $advnew['targets'],
  87. 'parameters' => $advnew['parameters'],
  88. 'code' => $advnew['code'],
  89. 'starttime' => $advnew['starttime'],
  90. 'endtime' => $advnew['endtime']
  91. ));
  92. return true;
  93. }
  94. protected function _encodeAdvCode($advnew) {
  95. switch($advnew['style']) {
  96. case 'code':
  97. $advnew['code'] = $advnew['code']['html'];
  98. break;
  99. case 'text':
  100. $advnew['code'] = '<a href="'.$advnew['text']['link'].'" target="_blank" '.($advnew['text']['size'] ? 'style="font-size: '.$advnew['text']['size'].'"' : '').'>'.$advnew['text']['title'].'</a>';
  101. break;
  102. case 'image':
  103. $advnew['code'] = '<a href="'.$advnew['image']['link'].'" target="_blank"><img src="'.$advnew['image']['url'].'"'.($advnew['image']['height'] ? ' height="'.$advnew['image']['height'].'"' : '').($advnew['image']['width'] ? ' width="'.$advnew['image']['width'].'"' : '').($advnew['image']['alt'] ? ' alt="'.$advnew['image']['alt'].'"' : '').' border="0"></a>';
  104. break;
  105. case 'flash':
  106. $advnew['code'] = '<embed width="'.$advnew['flash']['width'].'" height="'.$advnew['flash']['height'].'" src="'.$advnew['flash']['url'].'" type="application/x-shockwave-flash" wmode="transparent"></embed>';
  107. break;
  108. }
  109. return $advnew['code'];
  110. }
  111. }