Пример #1
0
 public function getHome($r)
 {
     $t = new Dase_Template($r);
     $set = new CouchDB_DocumentSet($this->db);
     $t->assign('docs', $set->listByTitle());
     $r->renderResponse($t->fetch('home.tpl'));
 }
Пример #2
0
 public function getBooks($r)
 {
     $t = new Dase_Template($r);
     $books = new Dase_DBO_Book($this->db);
     $t->assign("books", $books->findAll());
     $r->renderResponse($t->fetch('chinese_flashcards/books.tpl'));
 }
Пример #3
0
 public function getLoginForm($r)
 {
     //target is empty in the most common case
     //but it *is* used to get people back to
     //their place if they are prompted in the middle of things
     $t = new Dase_Template($r);
     $t->assign('target', $r->get('target'));
     $r->renderResponse($t->fetch('login_form.tpl'));
 }
Пример #4
0
 public function getEditForm($r)
 {
     $t = new Dase_Template($r);
     $item = new CouchDB_Document_Item($this->db);
     if (!$item->get($r->get('id'))) {
         $r->renderRedirect('home');
     }
     $t->assign('item', $item);
     $r->renderResponse($t->fetch('item_edit.tpl'));
 }
Пример #5
0
 public function getHome($r)
 {
     $t = new Dase_Template($r);
     $t->assign('exercise_sets', Dase_DBO_ExerciseSet::getAll($this->db));
     $c = new Dase_DBO_Content($this->db);
     $c->page = 'home';
     if ($c->findOne()) {
         $t->assign('content', $c->text);
     }
     $r->renderResponse($t->fetch('home.tpl'));
 }
Пример #6
0
 public function getSearchForm($r)
 {
     $t = new Dase_Template($r);
     if ($r->get('lastname')) {
         $results = Utlookup::lookup($r->get('lastname'), 'sn');
         usort($results, 'sortByName');
         $t->assign('lastname', $r->get('lastname'));
         $t->assign('results', $results);
     }
     $r->renderResponse($t->fetch('framework/directory.tpl'));
 }
Пример #7
0
 public function getSearchForm($r)
 {
     $t = new Dase_Template($r);
     $t->assign('exercise_sets', Dase_DBO_ExerciseSet::getAll($this->db));
     if ($r->get('lastname')) {
         $results = Utlookup::lookup($r->get('lastname'), 'sn');
         usort($results, array('Util', 'sortByName'));
         $t->assign('lastname', $r->get('lastname'));
         $t->assign('results', $results);
     }
     $r->renderResponse($t->fetch('directory_search.tpl'));
 }
Пример #8
0
 public function getLesson($r)
 {
     $book = new Dase_DBO_Book($this->db);
     $book->short_name = $r->get('short_name');
     $book->findOne();
     $lesson = new Dase_DBO_Lesson($this->db);
     $lesson->name = $r->get('lesson_name');
     $lesson->book_id = $book->id;
     $lesson->findOne();
     $lesson->getBook();
     $lesson->getWords();
     $t = new Dase_Template($r);
     //Simplified or Traditional Pref
     if (isset($_COOKIE['user_pref'])) {
         $pref = $_COOKIE['user_pref'];
         $t->assign('user_pref', $pref);
     } else {
         $t->assign('user_pref', 'simplified');
         setcookie('user_pref', 'simplified', time() + 60 * 60 * 24 * 14, '/');
     }
     //Card Preferences
     if (isset($_COOKIE['card_pref'])) {
         $pref = $_COOKIE['card_pref'];
         $t->assign('card_pref', $pref);
     } else {
         $t->assign('card_pref', 'pin-chi-eng');
         setcookie('card_pref', 'pin-chi-eng', time() + 60 * 60 * 24 * 14, '/');
     }
     $t->assign("book", $book);
     $t->assign("lesson", $lesson);
     $r->renderResponse($t->fetch('chinese_flashcards/lesson.tpl'));
 }
Пример #9
0
 public function getDesignDocForm($r)
 {
     $t = new Dase_Template($r);
     $set = new CouchDB_DocumentSet($this->db);
     $t->assign('design_docs', $set->listDesignDocs());
     if ($r->get('title')) {
         $dd = new CouchDB_Document($this->db);
         $dd->get('_design/' . $r->get('title'));
         $set = array();
         $set['title'] = $r->get('title');
         $set['views'] = '"views": ' . CouchDB::encode_json($dd->views);
         $set['rev'] = $dd->_rev;
         $t->assign('ddoc', $set);
     }
     $r->renderResponse($t->fetch('design_doc_form.tpl'));
 }
Пример #10
0
 public function getItem($r)
 {
     $t = new Dase_Template($r);
     //if no format, assume name is ID
     $item = new Dase_DBO_Item($this->db);
     if ($item->load($r->get('name'))) {
         $item->getSets();
         $t->assign('item', $item);
         $sets = Dase_DBO_Itemset::getList($this->db);
         $t->assign('sets', $sets);
         $r->renderResponse($t->fetch('framework/item.tpl'));
     } else {
         $r->renderRedirect('items');
         //$r->renderError(404);
     }
 }
Пример #11
0
 public function getList($r)
 {
     $t = new Dase_Template($r, true);
     $c = Dase_DBO_Collection::get($this->db, $r->get('coll_ascii'));
     if (!$c) {
         $r->renderError('404');
     }
     if ('public' != $c->visibility) {
         $r->renderError('401');
     }
     $url = 'https://dase.laits.utexas.edu/collection/' . $c->ascii_id . '/items.json';
     $json = file_get_contents($url);
     $php_data = json_decode($json, true);
     $t->assign('c', $c);
     $t->assign('items', $php_data['items']);
     $r->renderResponse($t->fetch('index.tpl'));
 }
Пример #12
0
 public function getCollections($r)
 {
     $user = $r->getUser();
     //if no collections, redirect to archive admin screen
     //will force login screen for non-superusers if no collections
     $c = new Dase_DBO_Collection($this->db);
     if (!$c->findCount() && $user && $user->is_superuser) {
         $r->renderRedirect('admin');
     }
     $tpl = new Dase_Template($r);
     //$feed = Dase_Atom_Feed::retrieve($r->app_root.'/collections.atom');
     //$tpl->assign('collections',$feed);
     $res = Dase_Http::get($r->app_root . '/collections.json');
     $collections = Dase_Json::toPhp($res[1]);
     $tpl->assign('collections', $collections);
     $r->renderResponse($tpl->fetch('collection/list.tpl'));
 }
Пример #13
0
 public function getInfo($r)
 {
     $tpl = new Dase_Template($r, true);
     $types['sqlite'] = "SQLite";
     $types['mysql'] = "MySQL";
     $types['pgsql'] = "PostgreSQL";
     foreach ($this->db->listTables() as $t) {
         $tables[$t][] = 'id';
         foreach ($this->db->listColumns($t) as $c) {
             if ('id' != $c) {
                 $tables[$t][] = $c;
             }
         }
     }
     $tpl->assign('tables', $tables);
     $tpl->assign('db', $types[$this->db->getDbType()]);
     $r->renderResponse($tpl->fetch('index.tpl'));
 }
Пример #14
0
 public function getItems($r)
 {
     $t = new Dase_Template($r);
     $items = new Dase_DBO_Item($this->db);
     $items->orderBy('updated DESC');
     $items = $items->findAll(1);
     $result = array();
     if ($r->get('filter')) {
         $filter = $r->get('filter');
         $t->assign('filter', $filter);
         $parts = explode(':', $filter);
         //grab slice w/ format like 4:22
         if (2 == count($parts) && is_int((int) $parts[0]) && is_int((int) $parts[1])) {
             $result = array_slice($items, $parts[0] - 1, $parts[1] - $parts[0] + 1);
             $t->assign('filter', '');
         } else {
             foreach ($items as $item) {
                 if (false !== strpos($item->name, $filter) || false !== strpos($item->title, $filter) || false !== strpos($item->body, $filter) || false !== strpos($item->meta1, $filter) || false !== strpos($item->meta1, $filter) || false !== strpos($item->meta3, $filter)) {
                     $result[] = $item;
                 }
             }
         }
     } else {
         $result = $items;
     }
     $sets = Dase_DBO_Itemset::getList($this->db);
     $t->assign('sets', $sets);
     $t->assign('items', $result);
     $r->renderResponse($t->fetch('items.tpl'));
 }
Пример #15
0
 public function getWebspace($r)
 {
     $ws_path = $r->get('webspace_path');
     $webspace_url = 'https://webspace.utexas.edu/' . $ws_path;
     $rss_data = @file_get_contents($webspace_url . '?view=RSS');
     $files = array();
     $paths = array();
     $invalid_files = array();
     if ($rss_data) {
         $rss = new DOMDocument();
         $rss->loadXML($rss_data);
         $good_type = '';
         foreach ($rss->getElementsByTagName('item') as $item) {
             $enc = $item->getElementsByTagName('enclosure')->item(0);
             if ($enc) {
                 $file['url'] = $enc->getAttribute('url');
                 $file['length'] = ceil((int) $enc->getAttribute('length') / 1000);
                 $file['type'] = $enc->getAttribute('type');
                 $file['name'] = trim(urldecode(str_replace($webspace_url, '', $file['url'])), '/');
                 $good_type = Dase_Media::isAcceptable($file['type']);
             }
             if ($good_type) {
                 $files[] = $file;
             } else {
                 if ($enc) {
                     $invalid_files[] = $file;
                 } else {
                     $path_href = $item->getElementsByTagName('link')->item(0)->firstChild->substringData(0, 200);
                     $path['path_rel'] = str_replace('https://webspace.utexas.edu/', '', $path_href);
                     $path['path_name'] = $item->getElementsByTagName('title')->item(0)->firstChild->substringData(0, 200);
                     $paths[] = $path;
                 }
             }
         }
     }
     $tpl = new Dase_Template($r, true);
     $tpl->assign('collection', $this->collection);
     $tpl->assign('files', $files);
     $tpl->assign('invalid_files', $invalid_files);
     $tpl->assign('paths', $paths);
     $tpl->assign('webspace_path', $ws_path);
     $r->set('tab', 'module');
     $r->renderResponse($tpl->fetch('index.tpl'));
 }
Пример #16
0
 public function getIndex($r)
 {
     $t = new Dase_Template($r);
     $t->init($this);
     $r->renderResponse($t->fetch('test/index.tpl'));
 }
Пример #17
0
 public function getInstructions($r)
 {
     $t = new Dase_Template($r);
     $r->renderResponse($t->fetch('chinese_flashcards/instructions.tpl'));
 }
Пример #18
0
 public function getSet($r)
 {
     $t = new Dase_Template($r);
     $set = new Dase_DBO_Itemset($this->db);
     $set->name = $r->get('name');
     if ($set->findOne()) {
         $set->getItems();
         $t->assign('set', $set);
         $r->renderResponse($t->fetch('framework/set.tpl'));
     } else {
         $r->renderError(404);
     }
 }
Пример #19
0
 public function getUser($r)
 {
     $t = new Dase_Template($r);
     $t->assign('exercise_sets', Dase_DBO_ExerciseSet::getAll($this->db));
     $r->renderResponse($t->fetch('home.tpl'));
 }
Пример #20
0
 public function getExerciseEdit($r)
 {
     $t = new Dase_Template($r);
     $ex = new Dase_DBO_Exercise($this->db);
     if (!$ex->load($r->get('id'))) {
         $r->renderRedirect('home');
     }
     if ($this->user->eid != $ex->creator_eid) {
         $r->renderError(401, 'unauthorized');
     }
     // media
     $media_url = "https://dase.laits.utexas.edu/search.json?q=&collection_ascii_id=hdportal&max=999";
     $resp = Dase_Http::get($media_url);
     $data = Dase_Json::toPhp($resp[1]);
     $t->assign('feed', $data);
     // all categories
     $cset = array();
     $ex->getCreator();
     $ex->getLines();
     $ex->getSet();
     $t->assign('exercise', $ex);
     $t->assign('exercise_sets', Dase_DBO_ExerciseSet::getAll($this->db));
     $r->renderResponse($t->fetch('exercise_edit.tpl'));
 }
Пример #21
0
 public function getAbout($r)
 {
     $t = new Dase_Template($r);
     $r->renderResponse($t->fetch('chinese_flashcards/about.tpl'));
 }
Пример #22
0
 public function getSettings($r)
 {
     $u = $this->user;
     $t = new Dase_Template($r);
     $u->colls = $u->getCollections($r->app_root);
     $t->assign('user', $u);
     $t->assign('http_password', $u->getHttpPassword());
     $r->renderResponse($t->fetch('user/settings.tpl'), $r);
 }
Пример #23
0
 public function getSearch($r)
 {
     $r->checkCache();
     $tpl = new Dase_Template($r);
     //default slidehow max of 100
     $json_url = $r->app_root . '/' . $r->url . '&format=json&max=100';
     $tpl->assign('json_url', $json_url);
     $feed_url = $r->app_root . '/' . $r->url . '&format=atom';
     $tpl->assign('feed_url', $feed_url);
     $feed = Dase_Atom_Feed::retrieve($feed_url);
     //single hit goes directly to item
     $count = $feed->getCount();
     if (1 == $count) {
         //todo use preg_replace and guarentee only one replacement
         $url = str_replace('search?', 'search/item?', $r->url);
         $r->renderRedirect($r->app_root . '/' . $url . '&num=1');
     }
     if (0 == $count) {
         $coll = $r->get('collection_ascii_id');
         if (!$coll) {
             //won't go back to collection page unless
             //just one collection is being searched
             $coll_array = $r->get('c', true);
             if (1 == count($coll_array)) {
                 $coll = $coll_array[0];
             }
         }
         if ($coll) {
             $params['msg'] = 'no items found';
             $params['failed_query'] = $feed->getQuery();
             $r->renderRedirect($r->app_root . '/collection/' . $coll, $params);
         } else {
             $params['msg'] = 'no items found';
             $params['failed_query'] = $feed->getQuery();
             $r->renderRedirect($r->app_root . '/collections', $params);
         }
     }
     $end = $this->start + $this->max;
     if ($end > $count) {
         $end = $count;
     }
     $tpl->assign('start', $this->start);
     $tpl->assign('end', $end);
     $tpl->assign('sort', $r->get('sort'));
     $tpl->assign('items', $feed);
     if ('list' == $r->get('display')) {
         $tpl->assign('display', 'list');
     } else {
         $tpl->assign('display', 'grid');
     }
     $r->renderResponse($tpl->fetch('item_set/search.tpl'));
 }
Пример #24
0
 public function getUploader($r)
 {
     $tpl = new Dase_Template($r);
     $tpl->assign('collection', $this->collection);
     $tpl->assign('item_types', $this->collection->getItemTypes());
     $r->renderResponse($tpl->fetch('manage/uploader.tpl'));
 }
Пример #25
0
 public function getItemEditForm($r)
 {
     $t = new Dase_Template($r);
     $item = new Dase_DBO_Item($this->db);
     $item->load($r->get('id'));
     $t->assign('item', $item);
     $r->renderResponse($t->fetch('item_edit_form.tpl'));
 }
Пример #26
0
 public function getDbSchema($r)
 {
     $sql = $this->db->getSchema();
     $tpl = new Dase_Template($r);
     $tpl->assign('sql', $sql);
     $r->renderResponse($tpl->fetch('admin/sql.tpl'));
 }
Пример #27
0
 public function getSet($r)
 {
     $t = new Dase_Template($r);
     $set = new Dase_DBO_ExerciseSet($this->db);
     $set->load($r->get('id'));
     $set->getExercises();
     $t->assign('set', $set);
     $t->assign('exercise_sets', Dase_DBO_ExerciseSet::getAll($this->db));
     $r->renderResponse($t->fetch('set.tpl'));
 }
Пример #28
0
 public function getUser($r)
 {
     $t = new Dase_Template($r);
     $r->renderResponse($t->fetch('home.tpl'));
 }
Пример #29
0
 public function postToConfigChecker($r)
 {
     $resp = array();
     $resp['db'] = 1;
     $resp['proceed'] = 0;
     $db = array();
     $db['name'] = $r->get('db_name');
     $db['path'] = $r->get('db_path');
     $db['type'] = $r->get('db_type');
     $db['host'] = $r->get('db_host');
     $db['user'] = $r->get('db_user');
     $db['pass'] = $r->get('db_pass');
     if ('sqlite' == $db['type']) {
         $dsn = "sqlite:" . $db['path'];
     } else {
         $dsn = $db['type'] . ':host=' . $db['host'] . ';dbname=' . $db['name'];
     }
     try {
         $pdo = new PDO($dsn, $db['user'], $db['pass']);
     } catch (PDOException $e) {
         $resp['db'] = 0;
         $resp['db_msg'] = $e->getMessage();
     }
     if ($resp['db']) {
         $tpl = new Dase_Template($r, true);
         $tpl->assign('main_title', $r->get('main_title'));
         if ($r->get('table_prefix')) {
             $tpl->assign('table_prefix', trim($r->get('table_prefix'), '_') . '_');
         }
         $tpl->assign('eid', $r->get('eid'));
         $tpl->assign('password', $r->get('password'));
         $tpl->assign('convert_path', $r->get('convert_path'));
         $tpl->assign('db', $db);
         $tpl->assign('token', md5(time() . 'abc'));
         $tpl->assign('ppd_token', md5(time() . 'def'));
         $tpl->assign('service_token', md5(time() . 'ghi'));
         $tpl->assign('db', $db);
         if (!file_exists($r->base_path . '/inc/local_config.php')) {
             $resp['local_config_path'] = $r->base_path . '/inc/local_config.php';
             $resp['config'] = $tpl->fetch('local_config.tpl');
         } else {
             $resp['proceed'] = 1;
         }
     }
     $r->renderResponse(Dase_Json::get($resp));
 }
Пример #30
0
 public function getHelp($r)
 {
     $t = new Dase_Template($r);
     $t->assign('collection', Dase_Atom_Feed::retrieve($r->app_root . '/collection/dase_help.atom?limit=100'));
     $r->renderResponse($t->fetch('help.tpl'));
 }