setDebug(!true); $basecamp->setServerAuthentication($user,$passwd); //$r=$basecamp->getAccounts(); $r=$basecamp->setAccount('https://basecamp.com/2325915/api/v1'); //$r=$basecamp->getProjects(); $lists=array(); foreach ($projects as $proj){ $r=$basecamp->getTodoLists(false,$proj); foreach($r as $lo){ $lists[$proj][$lo->id]="{$proj}|".$lo->name; } } $f=dirname(__FILE__).'/config.jsn'; $s=@json_decode(@file_get_contents($f),1); if (empty($s)) $s=array(); if (!isset($argv)){ header('Content-type: text/html; charset=utf8'); if ($_POST){ $d=array(); foreach ($_POST as $k=>$v){ $k=intval($k); if ($k<1 OR empty($v)) continue; $d[$k]=$v; } file_put_contents($f,json_encode($d)); echo "OK"; } else { echo "
"; foreach ($lists as $proj) foreach ($proj as $i=>$n){ $val=(isset($s[$i]))?$s[$i]:''; echo htmlspecialchars($n).":
\n"; } echo "
"; } die; } $tasks=array(); foreach ($lists as $proj=>$projd) foreach (array_keys($projd) as $v){ $r=$basecamp->getTodoList($proj,$v); foreach ($r->todos->remaining as $to){ //var_dump($r->todos); break; $nn=getnewname($v,$to->content); if (empty($nn)) continue; $tasks[$to->id]=array($proj,$nn); } // break; } //$tasks=array_filter($tasks,'is_string'); //var_dump($tasks); foreach ($tasks as $id=>$nn){ echo "Setting {$id} (p{$nn[0]}): {$nn[1]}\n"; $r=$basecamp->updateTodo($nn[0],$id,$nn[1]); // var_dump($r); // break; } function getnewname($l,$name){ global $s; $counter=(int)@file_get_contents(dirname(__FILE__).'/counter.jsn'); $counter++; if (empty($name)) return NULL; if (preg_match('/^\[[A-Z-]*\d+\]/',$name)) return NULL; file_put_contents(dirname(__FILE__).'/counter.jsn',$counter); if (isset($s[$l])) $pfx=$s[$l]; else $pfx=''; return "[{$pfx}{$counter}] ".$name; }