Kyberia v2.3 - 1st revision from SVN (Without patches of kyberia.sk team)
[mirrors/Kyberia-bloodline.git] / inc / eventz / K.inc
index 4083f7ecaa27cea422668a8defad736ca35d1ed7..05485e4d498f7497f5dc2c5cf5b6e00ca5b4cbea 100644 (file)
 <?php
-/* This program is free software. It comes without any warranty, to
- * the extent permitted by applicable law. You can redistribute it
- * and/or modify it under the terms of the Do What The Fuck You Want
- * To Public License, Version 2, as published by Sam Hocevar. See
- * http://sam.zoy.org/wtfpl/COPYING for more details. */
-
+function hasAncestor($ancest, $n_id){
+    foreach($ancest as $one){
+        if($one['link'] == $n_id){ return true;}
+    }
+    return false;
+}
+function getAncestors($node_id){
+    global $db;
+    $q="select node_vector from nodes where node_id=".$node_id;
+    $result=$db->query($q);
+    if ($result->next()) {
+        $node=$result->getRecord();
+        $node['node_vector']=trim($node['node_vector'],"z");
+        $ancestors=explode(' ',chunk_split($node['node_vector'],VECTOR_CHARS,' '));
+        foreach ($ancestors as $ancestor) {
+            $anc[]=array("name"=>"","link"=>ltrim($ancestor,"0"));
+        }
+        return $anc;
+    }else{ return false;}
+}
+function getCommanders($node_id) {
+    global $db;
+    $set=$db->query("select node_permission,users.login,users.user_id from node_access left join users on node_access.user_id=users.user_id where node_id='$node_id' and node_permission!='' order by node_permission");
+    while ($set->next()) {
+        $commanders[$set->getString('node_permission')][]=$set->getString('user_id');
+    }
+    return $commanders;
+}
+function isCommander($comms,$user_id){
+    foreach($comms['master'] as $one){
+        if($one == $user_id){return true;}
+    }
+    foreach($comms['op'] as $one){
+        if($one == $user_id){return true;}
+    }
+    foreach($comms['execute'] as $one){
+        if($one == $user_id){return true;}
+    }
+    return false;
+}
+function isSenatOwner($senat_id, $user_id){
+    global $db;
+    $set=$db->query("select node_creator from nodes where node_id='$senat_id'");
+    if ($set->next()) {
+        if(($set->getString('user_id')) == $user_id){return true;}
+    }
+    return false;
+}
 
 function K() {
-       global $db,$node,$error,$error_messages;
-       $user_id=$_SESSION['user_id'];
-       $user_name=$_SESSION['user_name'];
-       $kset=$db->query("select user_k from users where user_id='$user_id'");
-       $kset->next();
-       $user_k=$kset->getString('user_k');
+    global $db,$node,$error,$error_messages;
+    $user_id=$_SESSION['user_id'];
+    $user_name=$_SESSION['user_name'];
+    $kset=$db->query("select user_k from users where user_id='$user_id'");
+    $kset->next();
+    $user_k=$kset->getString('user_k');
+
+    $senat_id = 876611;
+    $K_id     = 1961061;
+    $comms    = getCommanders($K_id);
+    $isComm   = isCommander($comms,$user_id);
+    $isSOwner = isSenatOwner($senat_id, $user_id);
 
-       if (is_array($_POST['node_chosen'])) {
-               $k=$_POST['node_chosen'];
-       }
-       else $k[]=$node['node_id'];
+    if (is_array($_POST['node_chosen'])) {
+        $k=$_POST['node_chosen'];
+    }
+    else $k[]=$node['node_id'];
+    $db->query("set autocommit=0");
 
-       foreach ($k as $id) {
-               if ($user_k) {
-                       $userset=$db->query("select node_creator from nodes where node_id='$id'");
-                       $userset->next();
-                       $donor_id=$userset->getString('node_creator');
-/*
-                       if ($donor_id==$user_id) {
-                               $error.=$error_messages['K_EGOTRIP'];
-                               log::log('K',$id,'failed',$donor_id,'egotrippin');
-                       }
+    foreach ($k as $id) {
 
-                       else {
-*/
-                               $set=$db->query("select * from node_access where node_id='$id' and user_id='$user_id' and given_k='yes'");
-                               if ($set->getNumRows()) {
-                                       $error.=$error_messages['K_GIVEN'];
-                                       log::log('K',$id,'failed',$donor_id,'already given');
-                               }
-                               else {
-                                       --$user_k;
-                                       $db->query("update nodes set k=k+1 where node_id='$id'");
-                                       $result=$db->update("update node_access set given_k='yes' where node_id='$id' and user_id='$user_id'");
-                                       if (!$result) {
-                                               $db->query("insert into node_access set given_k='yes',node_id='$id',user_id='$user_id',last_visit=NOW()");
-                                       }
+        if ($user_k) {
+            $isSenat = hasAncestor(getAncestors($id), $senat_id);
+            if ($isSenat && !($isComm || $isSOwner)){
+                $error.="Sorry, ale v senate mozu Kckovat len obcania.";
+            }else{
+                $userset=$db->query("select node_creator from nodes where node_id='$id'");
+                $userset->next();
+                $acceptor_id=$userset->getString('node_creator');
 
+                $set=$db->query("select * from node_access where node_id='$id' and user_id='$user_id' and given_k='yes'");
+                if ($set->getNumRows()) {
+                    $error.=$error_messages['K_GIVEN'];
+                }else{
+                    --$user_k;
+                    $db->query("update users set k_wallet=k_wallet+1 where user_id='$acceptor_id'");
 
-                                       log::log('K',$id,'ok',$donor_id);
-                               }
-//                     }
-               }
+                    $db->query("update nodes set k=k+1 where node_id='$id'");
+                    $db->query("insert into I set node_id='$id'");
+                    $result=$db->update("update node_access set given_k='yes' where node_id='$id' and user_id='$user_id'");
+                    if (!$result) {
+                        $db->query("insert into node_access set given_k='yes',node_id='$id',user_id='$user_id',last_visit=NOW()");
+                    }
+                }
+            }
+        }
 
-               else {
-                       $error.=$error_messages['K_SPENT'];
-                       log::log('K',$id,'failed',$donor_id,'zero amount');
-               }
-       }
+        else {
+            $error.=$error_messages['K_SPENT'];
+        }
+    }
 
-       $db->query("update users set user_k='$user_k' where user_id='$user_id'");
+    $db->query("update users set user_k='$user_k' where user_id='$user_id'");
+    $db->query("commit");
 
-       if (!$error) return true;
-       else return false;
+    if (!$error) return true;
+    else return false;
 }
 
-?>
\ No newline at end of file
+?>
+
+
This page took 0.152729 seconds and 4 git commands to generate.