Example #1
0
function translation_statistics_category_lang($lang) {
  $list=array();

  $sql_str="select category.* from category_current left join category on category_current.version=category.version";
  $res=sql_query($sql_str);
  while($elem=pg_fetch_assoc($res)) {
    $tags=new tags(parse_hstore($elem['tags']));
    $cat_lang=coalesce($tags->get("lang"), "en");

    if(($s=$tags->get("name:$lang"))||(($s=$tags->get("name"))&&$lang==$cat_lang))
      $list["category:{$elem['category_id']}:name"]=$s;
    if(($s=$tags->get("description:$lang"))||(($s=$tags->get("description"))&&$lang==$cat_lang))
    $list["category:{$elem['category_id']}:description"]=$s;

    $sql_str="select * from category_rule where version='{$elem['version']}'";
    $res_r=sql_query($sql_str);
    while($elem_r=pg_fetch_assoc($res_r)) {
      $tags_r=new tags(parse_hstore($elem_r['tags']));

      if(($s=$tags_r->get("name:$lang"))||(($s=$tags_r->get("name"))&&$lang==$cat_lang))
	$list["category:{$elem['category_id']}:{$elem_r['rule_id']}:name"]=$s;
    }
  }

  return $list;
}
  $cat->set("lang", "en");
  if(preg_match("/lang_str\[\".*\"\]=\[ (\".*\", )?\"(.*)\" \];/", $r, $m)) {
    $cat->set("name", $m[2]);
  }
  else {
    $cat->set("name", $cat_id);
  }

  foreach(array("de", "it", "ja") as $lang) {
    $f=popen("grep 'cat:$cat_id' $root_path/www/lang/$lang.js", "r");
    $r=fgets($f);
    pclose($f);

    if(preg_match("/lang_str\[\".*\"\]=\[ (\".*\", )?\"(.*)\" \];/", $r, $m)) {
      if($cat->get("name")!=$m[2])
	$cat->set("name:$lang", $m[2]);
    }
  }

  if(preg_match("/\//", $cat_id))
    $cat->set("hide", "yes");

  $list=array();
  foreach($list_category as $sub_cat_id=>$sub_cat_data) {
    if((substr($sub_cat_id, 0, strlen($cat_id))==$cat_id)&&
       (substr_count($sub_cat_id, "/")-substr_count($cat_id, "/")==1)) {
      $list[]=strtr($sub_cat_id, array("/"=>"_"));
    }
  }
    
Example #3
0
<?php

// +----------------------------------------------------------------------
// | Demila [ Beautiful Digital Content Trading System ]
// +----------------------------------------------------------------------
// | Copyright (c) 2015 http://demila.org All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Email author@demila.org
// +----------------------------------------------------------------------
_setView(ROOT_PATH . "/apps/" . $_GET['m'] . "/admin/add.php");
_setTitle($langArray['edit']);
if (!isset($_GET['id']) || !is_numeric($_GET['id'])) {
    refresh('?m=' . $_GET['m'] . '&c=list', 'INVALID ID', 'error');
}
$cms = new tags();
if (isset($_POST['edit'])) {
    $status = $cms->edit($_GET['id']);
    if ($status !== true) {
        abr('error', $status);
    } else {
        refresh("?m=" . $_GET['m'] . "&c=list", $langArray['edit_complete']);
    }
} else {
    $_POST = $cms->get($_GET['id']);
}
require_once ROOT_PATH . '/apps/lists/leftlist_admin.php';
Example #4
0
function category_save($request_id, $content, $param=array()) {
  global $db_central;
  global $current_user;

  // Create a sql-statement to import whole category in one transaction
  $sql="begin;";

  // Load file into $file
  $file=new DOMDocument();
  if(!($file->loadXML($content))) {
    return array("status"=>"Could not load data");
  }

  // Calculate a new version ID
  $version=uniqid();

  // read main tags
  $tags=new tags();
  $root=$file->firstChild;
  $tags->readDOM($root);

  // compile version tags
  $version_tags=new tags();
  $version_tags->set("user", $current_user->username);
  $version_tags->set("date", Date("c"));
  $version_tags->set("msg", $param['msg']);
  if(($current_user->tags->get("admin")=="yes")&&($param['lock']=="yes"))
    $version_tags->set("lock", "yes");

  // and old version
  $old_version=$root->getAttribute("version");
  if(!$old_version)
    $pg_old_version="null";
  else
    $pg_old_version="Array[".postgre_escape($old_version)."]";
  
  // check what we want as new id
  $new_id=$tags->get("id");
  if(!$new_id)
    $new_id=$request_id;
  if(!$new_id)
    $new_id="cat_{$version}";

  // is id available?
  $res=sql_query("select * from category_current where category_id=".postgre_escape($new_id), $db_central);
  if(($elem=pg_fetch_assoc($res))&&($elem['version']!=$old_version)) {
    // already taken by another category - we should include a message
    $tags->set("id:message", "ID '$new_id' has already been taken");
    $id="cat_{$version}";
  }
  else {
    $id=$new_id;
  }

  if($old_version&&($id==$tags->get("id"))) {
    $res=sql_query("select * from category where version=".postgre_escape($old_version), $db_central);
    $old_cat=pg_fetch_assoc($res);
    $old_version_tags=parse_hstore($old_cat['version_tags']);
    if(($old_version_tags['lock'])&&($current_user->tags->get("admin")!="yes")) {
      // category is locked and we are not admin
      $tags->set("id:message", "Category '$id' is locked.");
      $id="cat_{$version}";
    }
  }

  // add id to tags
  $tags->set("id", $id);

  // write main tags to db
  $sql.="insert into category values (".
    postgre_escape($id).", ".
    array_to_hstore($tags->data()).", ".
    "'$version', ".
    "$pg_old_version, ".
    array_to_hstore($version_tags->data()).
    ");";

  // process rules
  $current=$root->firstChild;
  while($current) {
    if($current->nodeName=="rule") {
      // read rule tags
      $rule_id=$current->getAttribute("id");
      $tags=new tags();
      $tags->readDOM($current);

      // write rule tags to db
      $sql.="insert into category_rule values (".
	postgre_escape($id).", ".
	postgre_escape($rule_id).", ".
	array_to_hstore($tags->data()).", ".
	"'$version');";
    }

    $current=$current->nextSibling;
  }

  // delete old version from category_current
  if($old_version)
    $sql.="delete from category_current ".
      "where version=".postgre_escape($old_version).";";

  // set current category version
  $sql.="insert into category_current values (".
    postgre_escape($id).", ".
    "'$version', now());";

  // inform other cluster servers of new category
  if(plugins_loaded("cluster_call")) {
    $sql.="select cluster_call('category_save', ".
      postgre_escape($id).");";
  }
  else {
    categories_has_saved($id);
  }

  // we are done.
  $sql.="commit;";
  sql_query($sql, $db_central);
  return array("status"=>true, "id"=>$id, "version"=>$version);
}