removed mods directory from the ATutor codebase
[atutor.git] / mods / social / lib / classes / Application.class.php
diff --git a/mods/social/lib/classes/Application.class.php b/mods/social/lib/classes/Application.class.php
deleted file mode 100644 (file)
index 2121c26..0000000
+++ /dev/null
@@ -1,398 +0,0 @@
-<?php
-/****************************************************************/
-/* ATutor                                                                                                              */
-/****************************************************************/
-/* Copyright (c) 2002-2009                                                                             */
-/* Adaptive Technology Resource Centre / University of Toronto  */
-/* http://atutor.ca                                                                                            */
-/*                                                              */
-/* This program is free software. You can redistribute it and/or*/
-/* modify it under the terms of the GNU General Public License  */
-/* as published by the Free Software Foundation.                               */
-/****************************************************************/
-// $Id$
-
-require_once(dirname(__FILE__) . '/Applications.class.php');
-require_once(dirname(__FILE__) .'/../SecurityToken.php');
-require_once(dirname(__FILE__) .'/../BlobCrypter.php');
-require_once(dirname(__FILE__) .'/../Crypto.php');
-require_once(dirname(__FILE__) .'/../BasicSecurityToken.php');
-require_once(dirname(__FILE__) .'/../BasicBlobCrypter.php');
-
-/**
- * Object for Application, (aka Gadgets)
- */
-class Application extends Applications{
-       var $id;        //application id
-       var $url, $title, $height, $screenshot, $thumbnail, $author, $author_email, $description, $settings, $views;
-       var $version;
-
-       //constructor
-       function Application ($id=0){
-               if ($id!=0){
-                       $this->id = $id;
-                       $this->getApplicationPrefs();   
-               }
-       }
-
-       /* 
-        * Add application by URL
-        * @param       object          gadget object retrieved from JSON + cURL
-        */
-       function addApplication($gadget_obj){ 
-               global $db, $addslashes;
-
-               //TODO: Many more fields to add
-//             $id                                             = $gadget_obj['moduleId'];   //after i change the URL to the key.
-               $author                                 = $addslashes($gadget_obj->author);
-               $author_email                   = $addslashes($gadget_obj->authorEmail);
-               $description                    = $addslashes($gadget_obj->description);
-               $screenshot                             = $addslashes($gadget_obj->screenshot);
-               $thumbnail                              = $addslashes($gadget_obj->thumbnail);
-               $title                                  = $addslashes($gadget_obj->title);
-               $height                                 = intval($gadget_obj->height);
-               $module_id                              = intval($gadget_obj->module_id);
-               $url                                    = $addslashes($gadget_obj->url);
-               $userPrefs                              = $addslashes(serialize($gadget_obj->userPrefs));
-               $views                                  = $addslashes(serialize($gadget_obj->views));
-
-               //determine next id
-               $sql = 'SELECT MAX(id) AS max_id FROM '.TABLE_PREFIX.'social_applications';
-               $result = mysql_query($sql, $db);
-               if ($result){
-                       $row = mysql_fetch_assoc($result);
-                       $id = $row['max_id'] + 1;
-               } else {
-                       $id = 1;
-               }
-               $member_id = $_SESSION['member_id'];
-
-               $sql = 'INSERT INTO '.TABLE_PREFIX."social_applications (id, url, title, height, screenshot, thumbnail, author, author_email, description, settings, views, last_updated) VALUES ($id, '$url', '$title', $height, '$screenshot', '$thumbnail', '$author', '$author_email', '$description', '$userPrefs', '$views', NOW())";
-               $result = mysql_query($sql, $db);
-               
-               //This application is already in the database, get its ID out
-               if (!$result){                  
-                       $sql = 'SELECT id, UNIX_TIMESTAMP(last_updated) AS last_updated FROM '.TABLE_PREFIX."social_applications WHERE url='$url'";
-                       $result = mysql_query($sql, $db);
-                       $row = mysql_fetch_assoc($result);
-                       $id = $row['id'];
-
-                       //Update the gadget
-                       //TODO: Needs some sort of comparing instead of blinding updating everytime. Version(can't find any)? Date(need another field in db?)
-                       //Use TIMESTAMP for now, but i perfer version #.
-                       //If the gadget is SOCIAL_APPLICATION_UPDATE_SCHEDULE days old, update it
-                       if (abs($row['last_updated']) < strtotime('-'.SOCIAL_APPLICATION_UPDATE_SCHEDULE.' day')){
-                               $sql = 'UPDATE '.TABLE_PREFIX."social_applications SET title='$title', height=$height, screenshot='$screenshot', thumbnail='$thumbnail', author='$author', author_email='$author_email', description='$description', settings='$userPrefs', views='$views', last_updated=NOW() WHERE url='$url'";
-                               $result = mysql_query($sql, $db);
-                               //echo $sql;
-                       }
-               } 
-
-               //Add a record into application_member table for mapping
-               $this->addMemberApplication($member_id, $id);
-       }
-
-
-       /**
-        * Add this application to the member's application list
-        * @param       int             member_id
-        * @param       int             application_id
-        */
-       function addMemberApplication($member_id, $app_id){
-               global $db;
-
-               $member_id = intval($member_id);
-               $app_id = intval($app_id);
-
-               $sql = 'INSERT INTO '.TABLE_PREFIX."social_members_applications (member_id, application_id) VALUES ($member_id, $app_id)";
-               $result = mysql_query($sql, $db);
-
-               if ($result){
-                       //Add this to the home page
-                       $home_settings = $this->getHomeDisplaySettings();
-                       $home_settings[$app_id] = 1;    //manually set this application
-                       $this->setHomeDisplaySettings($home_settings);
-
-                       $act = new Activity();          
-                       $act->addActivity($_SESSION['member_id'], '', $app_id);
-                       unset($act);
-               }
-       }
-
-
-       /**
-        * Parse application details
-        * @return      array of the attributes
-        *
-        */
-       function parseModulePrefs($app_url){
-               //parse all the attributes of the <ModulePrefs> tag
-               //and save everything in the object.
-                $gadget = $this->fetch_gadget_metadata($app_url);
-                return $gadget->gadgets;
-       }
-
-
-       // Restful - JSON CURL data transfer
-       private function fetch_gadget_metadata($app_url) {
-               $request = json_encode(array(
-                       'context' => array('country' => 'US', 'language' => 'en', 'view' => 'default', 
-                               'container' => 'atutor'), 
-                       'gadgets' => array(array('url' => $app_url, 'moduleId' => '1'))));
-               $ch = curl_init();
-               curl_setopt($ch, CURLOPT_URL, AT_SHINDIG_URL.'/gadgets/metadata');
-               curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
-               curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
-               curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
-               curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
-               curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 4);
-               curl_setopt($ch, CURLOPT_TIMEOUT, 20);
-               curl_setopt($ch, CURLOPT_POST, 1);
-               curl_setopt($ch, CURLOPT_POSTFIELDS, 'request=' . urlencode($request));
-               $content = @curl_exec($ch);
-               return json_decode($content);
-       }
-
-
-       /**
-        * Add application perferences into the table.
-        * @param       int             member id
-        * @param       string  hash's key, usually the name of the application
-        * @param       string  hash's value, contains key, value, and st.
-        * @return      true(1) if the perference has been updated, false(0) otherwise.
-        */
-       function setApplicationSettings($member_id, $key, $value){
-               global $addslashes, $db;
-
-               $app_id         = $this->id;
-               $member_id      = intval($member_id);           
-               $key            = $addslashes($key);
-               $value          = $addslashes($value);
-
-               $sql = 'INSERT INTO '.TABLE_PREFIX."social_application_settings (application_id, member_id, name, value) VALUES ($app_id, $member_id, '$key', '$value') ON DUPLICATE KEY UPDATE value='$value'";
-               $result = mysql_query($sql, $db);
-
-               //TODO: Might want to add something here to throw appropriate exceptions
-               return $result;
-       }
-
-
-       /**
-        * Get member's applications
-        * @param       int             the member id
-        */
-       function getMemberApplications($member_id){
-               global $db;
-               $result = array();
-
-               $member_id = intval($member_id);
-               $sql = 'SELECT * FROM '.TABLE_PREFIX.'social_members_applications WHERE member_id='.$member_id;
-               $rs = mysql_query($sql, $db);
-               if ($rs){
-                       while($row = mysql_fetch_assoc($rs)){
-                               $result[] = $row['app_id'];
-                       }
-               }
-               return $result;
-       }
-
-
-       /**
-        * Get user perferences for this application
-        * @return      array
-        */
-       function getApplicationSettings($member_id){
-               global $db;
-               $result = array();
-               $member_id = intval($member_id);
-
-               $sql = 'SELECT * FROM '.TABLE_PREFIX."social_application_settings WHERE member_id=$member_id AND application_id=".$this->id;
-               $rs = mysql_query($sql);
-               if ($rs){
-                       //loop cause an application can have multiple pairs of key=>value
-                       while ($row = mysql_fetch_assoc($rs)){
-                               $result[$row['name']] = $row['value'];
-                       }
-               }
-               return $result;
-       }
-
-       function getId(){
-               return $this->id;
-       }
-
-       function getUrl(){
-               return $this->url;
-       }
-
-       function getTitle(){
-               return $this->title;
-       }
-
-       function getModuleId(){
-               return intval($this->module_id);
-       }
-
-       function getHeight(){
-               if ($this->height==0){
-                       return 600;
-               }
-               return $this->height;
-       }
-
-       function getScreenshot(){
-               return $this->screenshot;
-       }
-
-       function getThumbnail(){
-               //check if this thumbnail link is a relative link
-               $url = parse_url($this->thumbnail);
-               if (!isset($url['scheme']) && !isset($url['host'])){
-                       $orig_url = parse_url($this->getUrl());
-                       return $orig_url['scheme'].'://'.$orig_url['host'].$this->thumbnail;
-               }
-               return $this->thumbnail;
-       }
-
-       function getAuthor(){
-               return $this->author;
-       }
-
-       function getAuthorEmail(){
-               return $this->author_email;
-       }
-
-       function getDescription(){
-               return $this->description;
-       }
-
-       function getSettings(){
-               return unserialize($this->settings);
-       }
-
-       function getViews(){
-               return unserialize($this->views);
-       }
-
-       /** 
-        * Return iframe URL based on the given parameters
-        * @param       int                     owner id
-        * @param       string          avaiable options are 'profile', 'canvas'
-        *                                              http://code.google.com/apis/orkut/docs/orkutdevguide/orkutdevguide-0.8.html#ops_mode
-        * @param       string          extra application parameters
-        * @return      iframe url
-        */
-       function getIframeUrl($oid, $view='profile', $appParams=''){
-               //let view=profile as default option
-               if ($view!='profile' && $view!='canvas'){
-                       $view = 'profile';
-               }
-
-               $app_settings = $this->getSettings();
-               $user_settings = $this->getApplicationSettings($_SESSION['member_id']);
-
-               //retrieve user preferences
-               foreach ($app_settings as $key => $setting) {
-                       if (! empty($key)) {
-                         $value = isset($user_settings[$key]) ? $user_settings[$key] : (isset($setting->default) ? $setting->default : null);
-                         if (isset($user_settings[$key])) {
-                               unset($user_settings[$key]);
-                         }
-                         //shindig doesn't like ';', it only takes '&' as of Apr 6th, 2009
-                         //$prefs .= SEP.'up_' . urlencode($key) . '=' . urlencode($value);
-                         $prefs .= '&up_' . urlencode($key) . '=' . urlencode($value);
-                       }
-               }
-               foreach ($user_settings as $name => $value) {
-                       // if some keys _are_ set in the db, but not in the gadget metadata, we still parse them on the url
-                       // (the above loop unsets the entries that matched  
-                       if (! empty($value) && ! isset($appParams[$name])) {
-                       //shindig doesn't like ';', it only takes '&' as of Apr 6th, 2009
-                       //$prefs .= SEP.'up_' . urlencode($name) . '=' . urlencode($value);
-                       $prefs .= '&up_' . urlencode($name) . '=' . urlencode($value);
-                       }
-               }
-
-               //generate security token
-               $securityToken = BasicSecurityToken::createFromValues(($oid > 0?$oid:$_SESSION['member_id']), // owner
-                                               $_SESSION['member_id'], // viewer
-                                               $this->getId(), // app id
-                                               'default', // domain key, shindig will check for php/config/<domain>.php for container specific configuration
-                                               urlencode($this->getUrl()), // app url
-                                               $this->getModuleId());// mod id
-//debug($securityToken);
-               $url = AT_SHINDIG_URL.'/gadgets/ifr?' 
-                       . "synd=default" 
-                       . "&container=default" 
-                       . "&viewer=". $_SESSION['member_id']
-                       . "&owner=" . $oid
-                       . "&aid=" . $this->getId()                      //application id
-                       . "&mid=" . $this->getModuleId()        //not sure what mod_id is
-                       . "&country=US" 
-                       . "&lang=en" 
-                       . "&view=" . $view      //canvas for this big thing, should be a variable
-                       . "&parent=" . urlencode("http://" . $_SERVER['HTTP_HOST']) . $prefs . (isset($appParams) ? '&view-params=' . urlencode($appParams) : '') 
-                       . "&st=" . urlencode(base64_encode($securityToken->toSerialForm())) 
-                       . "&v=" . $this->getVersion()
-                       . "&url=" . urlencode($this->getUrl()) . "#rpctoken=" . rand(0, getrandmax());
-               return $url;
-       }
-
-       //TO BE IMPLEMENTED
-       function getVersion(){
-               return '0.1';
-       }
-
-
-       /**
-        * Retrieve all information about this gadget and save it in the object
-        * @private
-        */
-       function getApplicationPrefs(){
-               global $db;
-
-               $sql = 'SELECT * FROM '.TABLE_PREFIX.'social_applications WHERE id='.$this->id;
-               $rs = mysql_query($sql);
-
-               if ($rs){
-                       $row = mysql_fetch_assoc($rs);
-                       //assign values
-                       $this->url                      = $row['url'];
-                       $this->title            = $row['title'];
-                       $this->height           = $row['height'];
-                       $this->screenshot       = $row['screenshot'];
-                       $this->thumbnail        = $row['thumbnail'];
-                       $this->author           = $row['author'];
-                       $this->author_email     = $row['author_email'];
-                       $this->description      = $row['description'];
-                       $this->settings         = $row['settings'];
-                       $this->views            = $row['views'];
-                       $this->last_updated     = $row['last_updated'];
-               }
-       }
-
-       /** 
-        * Delete an application
-        */
-       function deleteApplication(){
-               global $db;
-
-               //delete application mapping
-               $sql = 'DELETE FROM '.TABLE_PREFIX.'social_members_applications WHERE application_id='.$this->id.' AND member_id='.$_SESSION['member_id'];
-               $rs = mysql_query($sql);
-
-               //delete application data?
-               $sql = 'DELETE FROM '.TABLE_PREFIX.'social_application_settings WHERE application_id='.$this->id.' AND member_id='.$_SESSION['member_id'];
-               $rs = mysql_query($sql);
-
-               //delete application settings
-               $home_settings = $this->getHomeDisplaySettings();
-               if (isset($home_settings[$this->id])){                  
-                       unset($home_settings[$this->id]);
-                       $this->setHomeDisplaySettings($home_settings);
-               }
-
-               return $rs;
-       }
-}
-?>
\ No newline at end of file