Source for file linker.php

Documentation is available at linker.php

  1. <?php        
  2.     /**
  3.     * Sloodle iBank linker (for Sloodle 0.4).
  4.     * Allows a iBank to get the class list, and iPoints / Stipends assigned to each user
  5.     *
  6.     * @package iBank
  7.     * @copyright Copyright (c) 2007-8 Sloodle (various contributors)
  8.     * @license http://www.gnu.org/licenses/gpl-3.0.html GNU GPL v3
  9.     *
  10.     * @contributor Paul Preibisch - aka Fire Centaur
  11.     * 
  12.     */
  13.                     
  14.              
  15.      define ('CHUNK_SIZE',10);
  16.     /** Lets Sloodle know we are in a linker script. */
  17.     define('SLOODLE_LINKER_SCRIPT'true);
  18.         /** Grab the Sloodle/Moodle configuration. */
  19.     require_once('../../sl_config.php');
  20.     
  21.     /** SLOODLE course object data structure */
  22.     require_once(SLOODLE_LIBROOT.'/sloodlecourseobject.php');
  23.     /** SLOODLE stipendgiver object data structure */
  24.     require_once(SLOODLE_DIRROOT.'/mod/ibank-1.0/stipendgiver_object.php');
  25.     /** Sloodle Session code. */
  26.     /** Grab the Sloodle/Moodle configuration. */
  27.  
  28.     require_once(SLOODLE_LIBROOT.'/sloodle_session.php');
  29.     
  30.     require_once(SLOODLE_LIBROOT.'/modules/module_ibank.php');
  31.     
  32.      $sCourseObj null;
  33.      $stipendGiverObj null;
  34.     
  35.     
  36.     // Authenticate the request, and load a chat module
  37.     $sloodle new SloodleSession();
  38.     $sloodle->authenticate_request();
  39.     $sloodle->validate_user();  
  40.     $sloodle->load_module('ibank'true)
  41.     //get user data   
  42.     $avatarname $sloodle->user->get_avatar_name()
  43.     $avataruuid$sloodle->user->get_avatar_uuid();     
  44.     $sloodlemoduleid=$sloodle->request->optional_param('sloodlemoduleid')
  45.     $sloodlecontrollerid=$sloodle->request->optional_param('sloodlecontrollerid');    
  46.     $senderUuid=$sloodle->request->optional_param('senderuuid');  
  47.     $senderAvatarName=$sloodle->request->optional_param('senderavatarname');  
  48.     $sCourseObj new sloodleCourseObj($sloodlemoduleid);
  49.     $sloodleid=$sCourseObj->getSloodleId();
  50.     $stipendGiverObj new stipendGiverObject((int)$sloodlemoduleid);
  51.     $userid $sloodle->user->get_user_id();
  52.     //this function will add all user stipend data to the output
  53.     function addUserData($index){
  54.         global $sloodle;
  55.         global $sCourseObj;
  56.         global $stipendGiverObj;
  57.          //add all avatar data to the remaining lines    //7+   student DATA
  58.            //---sloodledata:
  59.            //  | moodleid 
  60.            //  | moodle user name 
  61.            //  | Avatar Name 
  62.            //  | stipendAllocation 
  63.            //  | user debits
  64.             $userList $sCourseObj->userList;
  65.             //getAvatarlist returns an array of stdObj  
  66.             //$av->userid 
  67.             //$av->username 
  68.             //$av->avname 
  69.             //$av->uuid             
  70.             $avatarList $sCourseObj->getAvatarList($userList);
  71.             $sloodleData="";
  72.             $size count($avatarList);
  73.             $i 0;
  74.             $currIndex $index
  75.             
  76.             foreach ($avatarList as $av){
  77.                 //print only the CHUNK_SIZE number of users starting from the current index point
  78.                if (($i $currIndex|| ($i ($currIndex CHUNK_SIZE))) {
  79.                    $i++
  80.                    continue//skip the ones which have already been sent
  81.                 
  82.                }
  83.                else{
  84.                    $sloodleData $av->userid "|".$av->username."|";
  85.                    $sloodleData .=  $av->avname "|";
  86.                    $sloodleData .=$stipendGiverObj->getStipendBudget($av->userid,$userList)."|";
  87.                    $sloodleData .=$stipendGiverObj->getUserDebits($av->userid);
  88.                    $sloodle->response->add_data_line($sloodleData);   
  89.                    $i++;
  90.                    if ($i==count($avatarList))  $sloodle->response->add_data_line("EOF");
  91.                }
  92.                
  93.             }
  94.                
  95.             
  96.         
  97.         
  98.     }
  99.     function addDefaultStats(){
  100.         //add full course name
  101.         global $sloodle;
  102.         global $sCourseObj;
  103.         global $stipendGiverObj;                                     
  104.             $userList $sCourseObj->userList;
  105.             $avatarNamesList $sCourseObj->getAvatarList($userList);
  106.             $sloodle->response->add_data_line(count($avatarNamesList))//line 3               
  107.             $sloodle->response->add_data_line($sCourseObj->sloodleCourseObject->get_full_name())//line 4         
  108.             //add sloodle name
  109.             $sloodleName$sloodle->module->get_name();
  110.             $sloodle->response->add_data_line($sloodleName)//line 5   
  111.             //add sloodle intro
  112.             $sloodleIntro$sloodle->module->get_intro();
  113.             $sloodle->response->add_data_line($sloodleIntro)//line 6
  114.             
  115.             //add default Stipend
  116.             $defaultStipend$stipendGiverObj->getStartingBalance();
  117.             $sloodle->response->add_data_line($defaultStipend)//line 7
  118.             
  119.             //add Total Stipends Allocated
  120.             $totalStipends $stipendGiverObj->getStipendBudget(null,$userList);
  121.             $sloodle->response->add_data_line($totalStipends)//line 8
  122.             
  123.             //add iCurrencyType
  124.             $iCurrencyType $stipendGiverObj->geticurrency();
  125.             $sloodle->response->add_data_line($iCurrencyType)//line 9
  126.     }
  127.     //load module to get access to the stipend_giver_object and its functions
  128.  
  129.  
  130.  //   $stipendGiverObj = new stipendGiverObject($sloodleid);
  131.   //  $sCourseObj = new sloodleCourseObj($sloodleid);
  132.     //get command
  133.     $command $sloodle->request->optional_param('command');
  134.     
  135.     switch ($command){
  136.          case "WITHDRAW":
  137.              $userList =    $sCourseObj->getUserList();
  138.              $stipend $stipendGiverObj->getStipendBudget($userid,$userList);
  139.              if ($stipend!==false){
  140.                  $withdrawn $stipendGiverObj->getUserDebits($userid);
  141.                  $remainingBalance $stipend $withdrawn;
  142.                  $withdrawAmount=$remainingBalance;
  143.                  if ($remainingBalance >0){
  144.                      $trans new stdClass();
  145.                      $trans->amount $withdrawAmount;
  146.                      $trans->userid =$sloodle->user->get_user_id();
  147.                      $trans->sloodleid=$sloodleid;
  148.                      $trans->itype="debit";
  149.                      $trans->avname=$senderAvatarName
  150.                      $trans->avuuid=$senderUuid;
  151.                      
  152.                      if ($stipendGiverObj->makeTransaction($trans)){
  153.                         $sloodle->response->set_status_code(1);             //line 0    1
  154.                         $sloodle->response->set_status_descriptor('OK');    //line 0    OK           
  155.                         //add command to send back into sl
  156.                         $sloodle->response->add_data_line($senderUuid);//line 1          
  157.                         $sloodle->response->add_data_line("withdrawStipendResponse");//line 2          
  158.                         addDefaultStats();                                                     
  159.                         //add data lines
  160.                         //userName|Avatar Name | senderUuid| new balance |iCurrency
  161.                         $data $userid ."|"$senderAvatarName ."|".$senderUuid."|".$withdrawAmount ."|"$stipendGiverObj->geticurrency(;
  162.                         $sloodle->response->add_data_line($data);       //line 9
  163.                        // addUserData();    //lines 10+
  164.                      }
  165.                      else//there was a problem
  166.                         
  167.                         $sloodle->response->set_status_code(701);             //line 0    1
  168.                         $sloodle->response->set_status_descriptor('COULDNT_ADD_TO_TRANSACTION_TABLE');    //line 0    BAD                                 
  169.                         $sloodle->response->add_data_line($senderUuid);//line 1          
  170.                         $sloodle->response->add_data_line("withdrawStipendResponse");//line 2
  171.                         addDefaultStats();                                                  
  172.                         $data $userId ."|"$senderAvatarName ."|".$senderUuid."|".$withdrawAmount ."|"$stipendGiverObj->geticurrency(;
  173.                         $sloodle->response->add_data_line($data);       //line 10
  174.                       //  addUserData();     
  175.                       }
  176.                       
  177.                       $sloodle->response->render_to_output()
  178.                      
  179.                      
  180.                  }else{      //ZERO BALANCE
  181.                         $sloodle->response->set_status_code(701);             //line 0    1
  182.                         $sloodle->response->set_status_descriptor('ZERO BALANCE');    //line 0    BAD                                 
  183.                         $sloodle->response->add_data_line($senderUuid);//line 1          
  184.                         $sloodle->response->add_data_line("withdrawStipendResponse");//line 2
  185.                         addDefaultStats();                                                  
  186.                         $data $userid ."|"$senderAvatarName ."|".$senderUuid."|".$withdrawAmount ."|"$stipendGiverObj->geticurrency(
  187.                         $sloodle->response->add_data_line($data);       //line 10
  188.                         $sloodle->response->render_to_output()
  189.                  }
  190.              }else{
  191.                        //STUDENT NOT ADDED TO STIPEND YET - TEACHER MUST RELOAD CLASS
  192.                         $sloodle->response->set_status_code(701);             //line 0    1
  193.                         $sloodle->response->set_status_descriptor('STUDENT NOT ADDED YET');    //line 0    BAD                                 
  194.                         $sloodle->response->add_data_line($senderUuid);//line 1          
  195.                         $sloodle->response->add_data_line("withdrawStipendResponse");//line 2
  196.                         addDefaultStats();                                                  
  197.                         $data $userid ."|"$senderAvatarName ."|".$senderUuid."|".$withdrawAmount ."|"$stipendGiverObj->geticurrency(
  198.                         $sloodle->response->add_data_line($data);       //line 10
  199.                         $sloodle->response->render_to_output()
  200.                  
  201.                  
  202.                  
  203.              }
  204.              
  205.          break;
  206.         //student commands
  207.        case "updateStipend":
  208.        //send message back to stipend giver 
  209.        //   LINE   MESAGE
  210.        //    0)     1 | OK
  211.        //    1)     senderUuid user who sent the comand
  212.        //    2)     updateStipendResponse 
  213.        //    3)     num users
  214.        //    4)     full course name 
  215.        //    5)     sloodle name 
  216.        //    6)     sloodle intro 
  217.        //    7)     default Stipend 
  218.        //    8)     Total Stipends Allocated
  219.        //    9)     iCurrencyType 
  220.        //    10)     userName|Avatar Name | newStipendBudget 
  221.  
  222.        
  223.                  $data $sloodle->request->optional_param('data')
  224.                  //data retrieved should be a string with the following elements 
  225.                  // 0) moodleId 
  226.                  // 1) avName 
  227.                  // 2) avUuid
  228.                  // 3) amount 
  229.                  $bits explode("|"$data);
  230.                  $moodleId      $bits[0];
  231.                  $avName        $bits[1];
  232.                  $modifyAmount  $bits[2];
  233.                  if ($stipendGiverObj->setStipendBudget($modifyAmount,$moodleId)){
  234.                     $sloodle->response->set_status_code(1);             //line 0    1
  235.                     $sloodle->response->set_status_descriptor('OK');    //line 0    OK           
  236.                     //add command to send back into sl
  237.                     $sloodle->response->add_data_line($senderUuid);//line 1          
  238.                     $sloodle->response->add_data_line("updateStipendResponse");//line 2          
  239.                     addDefaultStats();                                                     
  240.                     //add data lines
  241.                     //userName|Avatar Name | newStipendBudget
  242.                     $data $moodleId ."|"$avName ."|"$modifyAmount;
  243.                     $sloodle->response->add_data_line($data);       //line 9
  244.                    // addUserData();    //lines 10+
  245.                  }
  246.                  else//there was a problem
  247.                     
  248.                     $sloodle->response->set_status_code(701);             //line 0    1
  249.                     $sloodle->response->set_status_descriptor('BAD');    //line 0    BAD                                 
  250.                     $sloodle->response->add_data_line("updateStipendResponse");//line 1                     
  251.                     addDefaultStats();                                                  
  252.                     $data $moodleId ."|"$avName ."|"$avUuid ."|"$modifyAmount;
  253.                     $sloodle->response->add_data_line($data);       //line 9     
  254.                   //  addUserData();     
  255.                   }
  256.                   
  257.                   $sloodle->response->render_to_output()
  258.                      
  259.       
  260.        break;
  261.  case "setDefaultStipend":
  262.        //send message back to stipend giver 
  263.        //   LINE   MESAGE
  264.        //    0)     1 | OK
  265.        //    1)     senderUuid user who sent the comand
  266.        //    2)     updateStipendResponse 
  267.        //    3)     num students
  268.        //    4)     full course name 
  269.        //    5)     sloodle name 
  270.        //    6)     sloodle intro 
  271.        //    7)     default Stipend 
  272.        //    8)     Total Stipends Allocated 
  273.        //    9)     iCurrencyType               
  274.        //    10)     userName|Avatar Name | newStipendBudget 
  275.  
  276.        
  277.                  $data $sloodle->request->optional_param('data')
  278.                  //data retrieved should be a string with the following elements 
  279.                  // 0) moodleId 
  280.                  // 1) avName 
  281.                  // 2) avUuid
  282.                  // 3) amount 
  283.                  
  284.                  $modifyAmount  $data;
  285.                  if ($stipendGiverObj->setStipendBudget($modifyAmount)){
  286.                     $sloodle->response->set_status_code(1);             //line 0    1
  287.                     $sloodle->response->set_status_descriptor('OK');    //line 0    OK           
  288.                     //add command to send back into sl
  289.                     $sloodle->response->add_data_line($senderUuid);//line 1          
  290.                     $sloodle->response->add_data_line("setDefaultStipendResponse");//line 2          
  291.                     addDefaultStats();                                                     
  292.                     //add data lines
  293.                     //userName|Avatar Name | newStipendBudget
  294.                    // addUserData();    //lines 8+
  295.                  }
  296.                  else//there was a problem
  297.                     
  298.                     $sloodle->response->set_status_code(701);             //line 0    1
  299.                     $sloodle->response->set_status_descriptor('BAD');    //line 0    BAD                                 
  300.                     $sloodle->response->add_data_line("setDefaultStipendResponse");//line 1                     
  301.                     addDefaultStats();                                                  
  302.                     $data $moodleId ."|"$avNam ."|"$avUuid ."|"$modifyAmount;
  303.                     addUserData();     
  304.                   }
  305.                   
  306.                   $sloodle->response->render_to_output()
  307.                      
  308.       
  309.        break;       
  310.        //game and student commands
  311.        case "getClassList":
  312.            $index $sloodle->request->optional_param('data');
  313.            //send message back to stipend giver 
  314.            //   LINE   MESAGE
  315.            //    0)     1 | OK
  316.            //    1)     senderUuid
  317.            //    2)     getClassListResponse |
  318.            //    3)     num students
  319.            //    4)     full course name |
  320.            //    5)     sloodle name |
  321.            //    6)     sloodle intro |
  322.            //    7)     default Stipend |       
  323.            //    8)     Total Stipends Allocated | 
  324.            //    9)     iCurrency Type      
  325.            //    10+)   stipend data for each user |                     
  326.             $sloodle->response->set_status_code(1);             //line 0    1
  327.             $sloodle->response->set_status_descriptor('OK');    //line 0    OK  
  328.             $sloodle->response->add_data_line($senderUuid);//line 1                   
  329.             //add command to send back into sl
  330.             $sloodle->response->add_data_line("getClassListResponse");//line 1   
  331.             addDefaultStats();
  332.             addUserData($index);
  333.             // Output our response
  334.             $sloodle->response->render_to_output();        
  335.        break;
  336.     }
  337. ?>

Documentation generated on Fri, 17 Jul 2009 11:01:47 +0100 by phpDocumentor 1.4.0