| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- <?php
- /*
- [UCenter] (C)2001-2099 Comsenz Inc.
- This is NOT a freeware, use is subject to license terms
- $Id: credit.php 1059 2011-03-01 07:25:09Z monkey $
- */
- !defined('IN_UC') && exit('Access Denied');
- class control extends adminbase {
- function __construct() {
- $this->control();
- }
- function control() {
- parent::__construct();
- $this->check_priv();
- if(!$this->user['isfounder'] && !$this->user['allowadmincredits']) {
- $this->message('no_permission_for_this_module');
- }
- }
- function onls() {
- $appsrc = getgpc('appsrc', 'P');
- $creditsrc = getgpc('creditsrc', 'P');
- $appdesc = getgpc('appdesc', 'P');
- $creditdesc = getgpc('creditdesc', 'P');
- $ratiosrc = getgpc('ratiosrc', 'P');
- $ratiodesc = getgpc('ratiodesc', 'P');
- $delete = getgpc('delete', 'P');
- $addexchange = getgpc('addexchange', 'G');
- $delexchange = getgpc('delexchange', 'G');
- $settings = $this->get_setting(array('creditexchange'), TRUE);
- $creditexchange = is_array($settings['creditexchange']) ? $settings['creditexchange'] : array();
- $appsrc = @intval($appsrc);
- $creditsrc = @intval($creditsrc);
- $appdesc = @intval($appdesc);
- $creditdesc = @intval($creditdesc);
- $ratiosrc = ($ratiosrc = @intval($ratiosrc)) > 0 ? $ratiosrc : 1;
- $ratiodesc = ($ratiodesc = @intval($ratiodesc)) > 0 ? $ratiodesc : 1;
- if(!empty($addexchange) && $this->submitcheck()) {
- if($appsrc != $appdesc) {
- $key = $appsrc.'_'.$creditsrc.'_'.$appdesc.'_'.$creditdesc;
- $creditexchange[$key] = $ratiosrc."\t".$ratiodesc;
- $this->set_setting('creditexchange', $creditexchange, TRUE);
- $this->load('cache');
- $_ENV['cache']->updatedata('settings');
- $status = 1;
- $this->writelog('credit_addexchange', $appsrc.'_'.$creditsrc.' : '.$appdesc.'_'.$creditdesc.'='.$ratiosrc.' : '.$ratiodesc);
- } else {
- $status = -1;
- }
- $settings = $this->get_setting(array('creditexchange'), TRUE);
- $creditexchange = is_array($settings['creditexchange']) ? $settings['creditexchange'] : array();
- } elseif(!empty($delexchange) && $this->submitcheck()) {
- if(is_array($delete)) {
- foreach($delete as $key) {
- unset($creditexchange[$key]);
- }
- $this->set_setting('creditexchange', $creditexchange, TRUE);
- $this->load('cache');
- $_ENV['cache']->updatedata('settings');
- $status = 1;
- $this->writelog('credit_deleteexchange', "delete=".implode(',', $delete));
- }
- $settings = $this->get_setting(array('creditexchange'), TRUE);
- $creditexchange = is_array($settings['creditexchange']) ? $settings['creditexchange'] : array();
- }
- $apps = unserialize($this->settings['credits']);
- if(is_array($creditexchange)) {
- foreach($creditexchange as $set => $ratio) {
- $tmp = array();
- list($tmp['appsrc'], $tmp['creditsrc'], $tmp['appdesc'], $tmp['creditdesc']) = explode('_', $set);
- list($tmp['ratiosrc'], $tmp['ratiodesc']) = explode("\t", $ratio);
- $tmp['creditsrc'] = $apps[$tmp['appsrc']][$tmp['creditsrc']][0];
- $tmp['creditdesc'] = $apps[$tmp['appdesc']][$tmp['creditdesc']][0];
- $tmp['appsrc'] = $this->cache['apps'][$tmp['appsrc']]['name'];
- $tmp['appdesc'] = $this->cache['apps'][$tmp['appdesc']]['name'];
- $creditexchange[$set] = $tmp;
- }
- }
- $appselect = '';
- if(is_array($apps)) {
- foreach($apps as $appid => $credits) {
- $appselect .= '<option value="'.$appid.'">'.$this->cache['apps'][$appid]['name'].'</option>';
- $tmp = array();
- if(is_array($credits)) {
- foreach($credits as $id => $credit) {
- $tmp[] = '['.$id.', \''.str_replace('\'', '\\\'', $credit[0]).'\']';
- }
- }
- $creditselect[$appid] = 'credit['.$appid.'] = ['.implode(',', $tmp).'];';
- }
- }
- $this->view->assign('status', $status);
- $this->view->assign('appsrc', $appsrc);
- $this->view->assign('creditsrc', $creditsrc);
- $this->view->assign('appdesc', $appdesc);
- $this->view->assign('creditdesc', $creditdesc);
- $this->view->assign('ratiosrc', $ratiosrc);
- $this->view->assign('ratiodesc', $ratiodesc);
- $this->view->assign('appselect', $appselect);
- $this->view->assign('creditselect', $creditselect);
- $this->view->assign('creditexchange', $creditexchange);
- $this->view->display('admin_credit');
- }
- function onsync() {
- $this->load('note');
- $this->load('misc');
- $this->load('cache');
- $step = intval(getgpc('step', 'G'));
- if(!$step && is_array($this->cache['apps'])) {
- $credits = array();
- $stepapp = intval(getgpc('stepapp', 'G'));
- $testrelease = intval(getgpc('testrelease', 'G'));
- $appids = array_keys($this->cache['apps']);
- $appid = $appids[$stepapp];
- if(!$stepapp) {
- $_CACHE['credits'] = array();
- } else {
- include UC_DATADIR.'cache/credits.php';
- }
- if($app = $this->cache['apps'][$appid]) {
- $apifilename = isset($app['apifilename']) && $app['apifilename'] ? $app['apifilename'] : 'uc.php';
- if($app['extra']['apppath'] && @include $app['extra']['apppath'].'./api/'.$apifilename) {
- $uc_note = new uc_note();
- $data = trim($uc_note->getcreditsettings('', ''));
- } else {
- $url = $_ENV['note']->get_url_code('getcreditsettings', '', $appid);
- $data = trim($_ENV['misc']->dfopen($url, 0, '', '', 1));
- }
- if(!$testrelease) {
- if(!($data = $this->sync_unserialize($data, ''))) {
- header('location: '.UC_API.'/admin.php?m=credit&a=sync&step=0&stepapp='.$stepapp.'&testrelease=1&sid='.$this->view->sid);
- exit();
- } else {
- $stepapp++;
- }
- } else {
- $data = $this->sync_unserialize($data, 'release/20080429/');
- $stepapp++;
- }
- if($data) {
- $_CACHE['credits'][$appid] = $data;
- $s = "<?php\r\n";
- $s .= '$_CACHE[\'credits\'] = '.var_export($_CACHE['credits'], TRUE).";\r\n";
- $s .= "\r\n?>";
- $fp = @fopen(UC_DATADIR.'cache/credits.php', 'w');
- @fwrite($fp, $s);
- @fclose($fp);
- }
- header('location: '.UC_API.'/admin.php?m=credit&a=sync&step=0&stepapp='.$stepapp.'&sid='.$this->view->sid);
- } else {
- header('location: '.UC_API.'/admin.php?m=credit&a=sync&step=1&sid='.$this->view->sid);
- }
- exit();
- }
- include_once UC_DATADIR.'cache/credits.php';
- $credits = $_CACHE['credits'];
- $this->set_setting('credits', $credits, TRUE);
- $this->load('cache');
- $_ENV['cache']->updatedata('settings');
- $this->writelog('credit_sync', 'succeed');
- $settings = $this->get_setting(array('creditexchange'), TRUE);
- $creditexchange = is_array($settings['creditexchange']) ? $settings['creditexchange'] : array();
- $updaterequest = array();
- $i = 0;
- foreach($creditexchange as $set => $ratio) {
- $tmp = array();
- list($tmp['appsrc'], $tmp['creditsrc'], $tmp['appdesc'], $tmp['creditdesc']) = explode('_', $set);
- list($tmp['ratiosrc'], $tmp['ratiodesc']) = explode("\t", $ratio);
- $updaterequest[$tmp['appsrc']][] =
- '&credit['.$tmp['appsrc'].']['.$i.'][creditsrc]='.intval($tmp['creditsrc']).
- '&credit['.$tmp['appsrc'].']['.$i.'][appiddesc]='.urlencode($tmp['appdesc']).
- '&credit['.$tmp['appsrc'].']['.$i.'][creditdesc]='.intval($tmp['creditdesc']).
- '&credit['.$tmp['appsrc'].']['.$i.'][title]='.urlencode($this->cache['apps'][$tmp['appdesc']]['name'].' '.$credits[$tmp['appdesc']][$tmp['creditdesc']][0]).
- '&credit['.$tmp['appsrc'].']['.$i.'][unit]='.urlencode($credits[$tmp['appdesc']][$tmp['creditdesc']][1]).
- '&credit['.$tmp['appsrc'].']['.$i.'][ratiosrc]='.$tmp['ratiosrc'].
- '&credit['.$tmp['appsrc'].']['.$i.'][ratiodesc]='.$tmp['ratiodesc'].
- '&credit['.$tmp['appsrc'].']['.$i.'][ratio]='.($tmp['ratiosrc'] / $tmp['ratiodesc']);
- $i++;
- }
- $data = array();
- foreach($updaterequest as $appid => $value) {
- $data[] = implode('', $updaterequest[$appid]);
- }
- $_ENV['note']->add('updatecreditsettings', implode('', $data));
- $_ENV['note']->send();
- $this->message('syncappcredits_updated','admin.php?m=credit&a=ls');
- }
- function sync_unserialize($s, $release_root) {
- if(!function_exists('xml_unserialize')) {
- if($release_root && file_exists(UC_ROOT.$release_root.'./lib/xml.class.php')) {
- include UC_ROOT.$release_root.'./lib/xml.class.php';
- } else {
- include UC_ROOT.'./lib/xml.class.php';
- }
- }
- return xml_unserialize($s);
- }
- }
- ?>
|