<%TodoList(nodate)%> //date setting <%TodoList(normal,1)%> //date setting, memberid HISTORY ------- 2008-12-02 Ver0.44: [Fix] "Add TODO" bug fix. (hilbert) [Chg] Improve quote_smart() function. (yu) 2008-05-19 Ver0.43: [Fix] "Delete TODO" bug fix. (yu) 2006-09-30 Ver0.42: [Fix] Security fix. (yu) 2004-09-29 Ver0.41: [Fix] Check edit authority. (yu) 2004-05-30 Ver0.4 : [New] Blog members can own each todo list. (yu) */ // plugin needs to work on Nucleus versions <=2.0 as well if (!function_exists('sql_table')) { function sql_table($name) { return 'nucleus_' . $name; } } class NP_TodoList extends NucleusPlugin { function getName() { return 'Todo List'; } function getAuthor() { return 'yu'; } function getURL() { return 'http://works.datoka.jp/index.php?itemid=231'; } function getVersion() { return '0.44'; } function getMinNucleusVersion() { return 200; } function getTableList() { return array( sql_table('plug_todolist') ); } function getEventList() { return array(); } function supportsFeature($what) { switch($what) { case 'SqlTablePrefix': return 1; default: return 0; } } function getDescription() { return 'Show Todo List. [USAGE] <%TodoList(mode,memberid)%> ex. <%TodoList%>, <%TodoList(nodate)%>, <%TodoList(normal,1)%>'; } function install(){ sql_query ("CREATE TABLE IF NOT EXISTS ". sql_table('plug_todolist') ." ( tid INT UNSIGNED NOT NULL AUTO_INCREMENT, title VARCHAR(255) NOT NULL DEFAULT '', rank INT UNSIGNED NOT NULL DEFAULT 0, cond INT UNSIGNED NOT NULL DEFAULT 0, regdate DATE NOT NULL DEFAULT '1999-01-01', enddate DATE NOT NULL DEFAULT '1999-01-01', memberid INT UNSIGNED NOT NULL DEFAULT 1, primary key (tid))"); if(getNucleusVersion() < 220) { $this->createOption('canedit','Edit authority [self | team | self+admin]', 'text', 'self'); } else { $this->createOption('canedit','Edit authority [self | team | self+admin]', 'select', 'self', 'Self|self|Team|team|Self + Admin|self+admin'); } $this->createOption('dateFormat','Date format', 'text', 'm/d(D)'); $this->createOption('flg_pluglink','Show plugin link.','yesno','yes'); $this->createOption('flg_erase', 'Erase data on uninstall.', 'yesno', 'no'); } function unInstall() { if ($this->getOption(flg_erase) == 'yes') { sql_query ('DROP TABLE '. sql_table('plug_todolist') ); } } // .../action.php?action=plugin&name=TodoList&type=verup&vernum=X.X // it need login to update function versionUpdate($oldver) { switch ($oldver) { case 0.1: case 0.2: case 0.3: sql_query ("ALTER TABLE ". sql_table('plug_todolist'). " ADD ( memberid INT UNSIGNED NOT NULL DEFAULT 1)"); break; case 0.4: default: //nothing to do break; } } function init() { $this->rankname = array('*','**','***'); $this->condname = array('notyet','working','finished','pending'); $this->condstyle = array('background:#fff','background:#fd6','background:#add','background:#999;color:white','background:#f00;color:white'); $query = "SHOW TABLES LIKE '". sql_table('plug_todolist') ."'"; $table = sql_query($query); if (mysql_num_rows($table) > 0){ $query = "SELECT * FROM ". sql_table('plug_todolist') ." ORDER BY cond, enddate"; $res = sql_query($query); while ($data = mysql_fetch_object($res)) { $this->list[$data->memberid][] = $data; //set data by memberid } } } function doSkinVar($skinType, $showmode='normal',$memid='') { global $memberid; if (!$memid) $memid = $memberid; //in member page if (!$memid) $memid = 1; //default $editmode = intRequestVar('todoedit'); //get or post $this->showTodoList($editmode, $showmode, $memid); } function isLoggedIn() { global $member; return $member->isLoggedIn(); } function canEdit($memid) { global $blog, $member; if ($blog) $b =& $blog; else $b =& $manager->getBlog($CONF['DefaultBlog']); $bid = $b->getID(); if (!$member->isLoggedIn()) return 0; switch ($this->getOption('canedit')) { case 'self': return ($member->getID() == $memid); break; case 'team': return ($member->teamRights($bid)); break; case 'self+admin': return ($member->getID() == $memid || $member->blogAdminRights($bid)); break; default: return 0; } } function showEntryForm($editmode, $showmode, $memid) { global $CONF; if (!$editmode) return; ?>
getAdminURL(); $this->showEntryForm($editmode, $showmode, $memid); if (empty($this->list[$memid])) { echo "

No data found.

"; } else { //sort by rank foreach($this->list[$memid] as $l) { //if ($l->memberid != $memid) continue; // id check $byrank[ $l->rank ][] = $l; } $sortlist = array(); for($i=count($this->rankname); $i>0; $i--) { $sortlist = array_merge($sortlist, (array)$byrank[$i-1]); } echo "