[ Index ]

PHP Cross Reference of Textpattern 4.0.8

title

Body

[close]

/textpattern/lib/ -> txplib_update.php (source)

   1  <?php
   2  
   3  /*
   4  $HeadURL: https://textpattern.googlecode.com/svn/releases/4.0.8/source/textpattern/lib/txplib_update.php $
   5  $LastChangedRevision: 2812 $
   6  */
   7  
   8  //-------------------------------------------------------------
   9  function install_language_from_file($lang)
  10  {
  11      $lang_file = txpath.'/lang/'.$lang.'.txt';
  12      # first attempt with local file
  13      if (is_file($lang_file) && is_readable($lang_file))
  14      {
  15          $lang_file = txpath.'/lang/'.$lang.'.txt';
  16          if (!is_file($lang_file) || !is_readable($lang_file)) return;
  17          $file = @fopen($lang_file, "r");
  18          if ($file) {
  19              $lastmod = @filemtime($lang_file);
  20              $lastmod = date('YmdHis',$lastmod);
  21              $data = array();
  22              $event = '';
  23  
  24              while (!feof($file)) {
  25                  $line = fgets($file, 4096);
  26                  # any line starting with #, not followed by @ is a simple comment
  27                  if($line[0]=='#' && $line[1]!='@' && $line[1]!='#') continue;
  28                  # if available use the lastmod time from the file
  29                  if (strpos($line,'#@version') === 0)
  30                  {    # Looks like: "#@version id;unixtimestamp"
  31                      @list($fversion,$ftime) = explode(';',trim(substr($line,strpos($line,' ',1))));
  32                      $lastmod = date("YmdHis",min($ftime, time()));
  33                  }
  34                  # each language section should be prefixed by #@
  35                  if($line[0]=='#' && $line[1]=='@')
  36                  {
  37                      if (!empty($data)){
  38                          foreach ($data as $name => $value)
  39                          {
  40                              $value = addslashes($value);
  41                              $exists = mysql_query('SELECT name, lastmod FROM `'.PFX."txp_lang` WHERE `lang`='".$lang."' AND `name`='$name' AND `event`='$event'");
  42                              if ($exists) $exists = mysql_fetch_row($exists);
  43                              if ($exists[1])
  44                              {
  45                                  mysql_query("UPDATE `".PFX."txp_lang` SET `lastmod`='$lastmod', `data`='$value' WHERE `lang`='".$lang."' AND `name`='$name' AND `event`='$event'");
  46                                  echo mysql_error();
  47                              } else
  48                                  mysql_query("INSERT DELAYED INTO `".PFX."txp_lang`  SET    `lang`='".$lang."', `name`='$name', `lastmod`='$lastmod', `event`='$event', `data`='$value'");
  49                                  echo mysql_error();
  50                          }
  51                      }
  52                      # reset
  53                      $data = array();
  54                      $event = substr($line,2, (strlen($line)-2));
  55                      $event = rtrim($event);
  56                      continue;
  57                  }
  58  
  59                  @list($name,$val) = explode(' => ',trim($line));
  60                  $data[$name] = $val;
  61              }
  62              # remember to add the last one
  63              if (!empty($data)){
  64                  foreach ($data as $name => $value)
  65                  {
  66                       mysql_query("INSERT DELAYED INTO `".PFX."txp_lang`  SET `lang`='".$lang."', `name`='$name', `lastmod`='$lastmod', `event`='$event', `data`='$value'");
  67                  }
  68              }
  69              mysql_query("DELETE FROM `".PFX."txp_lang`  WHERE `lang`='".$lang."' AND `lastmod`>$lastmod");
  70              @fclose($filename);
  71              #delete empty fields if any
  72              mysql_query("DELETE FROM `".PFX."txp_lang` WHERE `data`=''");
  73              mysql_query("FLUSH TABLE `".PFX."txp_lang`");
  74  
  75              return true;
  76          }
  77      }
  78      return false;
  79  }
  80  
  81  //-------------------------------------------------------------
  82  # check for updates through xml-rpc
  83  function checkUpdates()
  84  {
  85      require_once txpath.'/lib/IXRClass.php';
  86      $client = new IXR_Client('http://rpc.textpattern.com');
  87      $uid = safe_field('val','txp_prefs',"name='blog_uid'");
  88      if (!$client->query('tups.getTXPVersion',$uid))
  89      {
  90          return gTxt('problem_connecting_rpc_server');
  91      }else{
  92          $msg = array();
  93          $response = $client->getResponse();
  94          if (is_array($response))
  95          {
  96              ksort($response);
  97              $version = safe_field('val','txp_prefs',"name='version'");
  98              $lversion = explode('.',$version);
  99  
 100              $branch = substr($version,0,3);
 101              foreach ($response as $key => $val)
 102              {
 103                  $rversion = explode('.',$val);
 104  
 105                  if ($key == 'txp_current_version_'.$branch)
 106                  {
 107                      if (isset($lversion[2]) && isset($rversion[2]) && (intval($rversion[2])>intval($lversion[2])))
 108                      {
 109                          $msg[]= gTxt('updated_branch_version_available');
 110                      }else{
 111                          $msg[]= gTxt('your_branch_is_updated');
 112                      }
 113                  }else{
 114                      if (intval($rversion[0])>intval($lversion[0]) || intval($rversion[1])>intval($lversion[1]))
 115                      {
 116                          $msg[]= gTxt('new_textpattern_version_available').': '.$val;
 117                      }
 118                  }
 119              }
 120              return $msg;
 121          }
 122      }
 123  }
 124  
 125  
 126  ?>


Generated: Thu May 21 23:03:01 2009 Cross-referenced by PHPXref 0.7