00001 <?php
00002
00011 class TSDWord extends TSDLeaf {
00012 public static $ATTRIBUTES = array(
00013 'word' => 'edit',
00014 'definition' => 'edit'
00015 );
00016
00025 public function __construct($word = '') {
00026 parent::__construct('TSDDictionary', self::$ATTRIBUTES, 'word', $word, 'TSDDictionaryAlignment', 'word');
00027 }
00028
00036 public function isValid() {
00037 return (
00038 ($this->word != '') &&
00039 ($this->definition != '')
00040 );
00041 }
00042
00050 public function getParent() {
00051 return null;
00052 }
00053
00061 public function getIdentifier() {
00062 return $this->word;
00063 }
00064
00076 public function listChildren($constraints = array(), $limit = array(), $order = array(), $cnt = false) {
00077 return null;
00078 }
00079
00091 public function listValidChildren($constraints = array(), $limit = array(), $order = array(), $cnt = false) {
00092 return null;
00093 }
00094
00106 public static function getList($constraints = array(), $limit = array(), $order = array(), $cnt = false) {
00107 return self::getListImpl('TSDWord', 'TSDDictionary', array_keys(self::$ATTRIBUTES), $constraints,
00108 array(), $limit, $order, $cnt);
00109 }
00110
00120 public static function listByLetter($letter, $cnt = false) {
00121 return self::getListImpl('TSDWord', 'TSDDictionary', array_keys(self::$ATTRIBUTES), array(),
00122 array('LIKE', 'word' => "$letter%"), array(), array(), $cnt);
00123 }
00124
00134 public static function getResourceAlignments($urlOrId, $mode = TSD::MODE_LIVE) {
00135 if(($id = self::getCWISID($urlOrId)) === false)
00136 return false;
00137 $query = 'SELECT TSDDictionary.word, definition, reason, version, status FROM TSDDictionaryAlignment LEFT JOIN '
00138 . 'TSDDictionary ON TSDDictionary.word = TSDDictionaryAlignment.word WHERE TSDDictionaryAlignment.resourceId = '
00139 . $id;
00140 switch($mode) {
00141 case TSD::MODE_LIVE:
00142 $query .= ' AND version = \'LIVE\'';
00143 break;
00144 case TSD::MODE_DEV:
00145 $query .= ' AND version = \'DEV\'';
00146 break;
00147 case TSD::MODE_DEV_ACTIVE:
00148 $query .= ' AND version = \'DEV\' AND status <> \'DELETED\'';
00149 break;
00150 case TSD::MODE_NEW:
00151 $query .= ' AND version = \'DEV\' AND status = \'NEW\'';
00152 break;
00153 case TSD::MODE_CHANGED:
00154 $query .= ' AND version = \'DEV\' AND status = \'CHANGED\'';
00155 break;
00156 case TSD::MODE_DELETED:
00157 $query .= ' AND version = \'DEV\' AND status = \'DELETED\'';
00158 break;
00159 case TSD::MODE_APPROVED:
00160 $query .= ' AND version = \'DEV\' AND status = \'APPROVED\'';
00161 break;
00162 case TSD::MODE_ALL:
00163 $query .= '';
00164 break;
00165 }
00166 $DBI = TSD::getDBI();
00167 $result = $DBI->query($query);
00168 if(count($DBI->getError()) > 0) {
00169 $this->setError('DB error(s): ' . implode('; ', $DBI->getError()));
00170 return null;
00171 }
00172 $out = array();
00173 foreach($result as $r) {
00174 $obj = new TSDWord();
00175 $obj->addAttribute('reason', false);
00176 $obj->addAttribute('version', false);
00177 $obj->addAttribute('status', false);
00178 $obj->setAttr('reason', $r['reason']);
00179 $obj->setAttr('word', $r['word']);
00180 $obj->setAttr('definition', $r['definition']);
00181 $obj->setAttr('version', $r['version']);
00182 $obj->setAttr('status', $r['status']);
00183 $out[] = $obj;
00184 }
00185 return $out;
00186 }
00187 }
00188
00189 ?>