-
+
diff --git a/DB_Changes.txt b/DB_Changes.txt
index 604ccfc..126ff74 100644
--- a/DB_Changes.txt
+++ b/DB_Changes.txt
@@ -19,4 +19,33 @@ othervalues -> ms4_othervalues
updates -> ms4_updates
updates -> 'Name' is primary key
updates -> Adjust 'Link'
-updates -> 'Name' Type is VARCHAR(64)
\ No newline at end of file
+updates -> 'Name' Type is VARCHAR(64)
+updates -> Removed col 'Log'
+
+updateslog -> new table
+db->createCommand('SELECT * FROM {{updates}}')->queryAll();
+$transaction=Yii::app()->db->beginTransaction();
+foreach($rows as $row) {
+ $prog = $row['Name'];
+ $log = $row['Log'];
+ $lines = explode('
', $log);
+
+ foreach ($lines as $line) {
+ $result = array();
+ preg_match('/([^ ]+)[^0-9]*([0-9\.]+)[^\(]*\((.*?)\)/', $line, $result);
+
+ if (count($result) == 4) {
+ $ip = trim($result[1]);
+ $version = trim($result[2]);
+ $date = DateTime::createFromFormat('d.m.Y - H:i:s', trim($result[3]));
+
+ echo $prog . ' | ' . $ip . ' | ' . $version . ' | ' . $date->format('Y-m-d H:i:s') . '
';
+
+ Yii::app()->db->createCommand("INSERT INTO {{updateslog}} (programname, ip, version, date) VALUES ('$prog', '$ip', '$version', '" . $date->format('Y-m-d H:i:s') . "')")->execute();
+ }
+ }
+ echo '
';
+}
+$transaction->commit();
+?>
\ No newline at end of file
diff --git a/www/protected/models/Program.php b/www/protected/models/Program.php
index 4ddd845..8cf1ef2 100644
--- a/www/protected/models/Program.php
+++ b/www/protected/models/Program.php
@@ -23,6 +23,8 @@
* @property integer $uses_absCanv
* @property string $update_identifier
* @property integer $highscore_gid
+ *
+ * @property ProgramUpdates $version
*/
class Program extends CActiveRecord
{
@@ -58,9 +60,14 @@ class Program extends CActiveRecord
*/
public function relations()
{
- // NOTE: you may need to adjust the relation name and the related
- // class name for the relations automatically generated below.
return array(
+ 'version' =>
+ [
+ self::HAS_ONE,
+ 'ProgramUpdates',
+ [
+ 'Name' => 'update_identifier'
+ ]],
);
}
@@ -197,12 +204,4 @@ class Program extends CActiveRecord
return $out;
}
-
- public function hasVersionInfo() {
- return ! empty($this->update_identifier);
- }
-
- public function getVersionInfo() {
- return 0; //TODO
- }
}
diff --git a/www/protected/models/ProgramUpdates.php b/www/protected/models/ProgramUpdates.php
new file mode 100644
index 0000000..329beda
--- /dev/null
+++ b/www/protected/models/ProgramUpdates.php
@@ -0,0 +1,103 @@
+64),
+ // The following rule is used by search().
+ array('Name, Version, Link', 'safe', 'on'=>'search'),
+ );
+ }
+
+ /**
+ * @return array relational rules.
+ */
+ public function relations()
+ {
+ // NOTE: you may need to adjust the relation name and the related
+ // class name for the relations automatically generated below.
+ return array(
+ 'log' =>
+ [
+ self::HAS_MANY,
+ 'ProgramUpdatesLog',
+ [
+ 'programname' => 'Name'
+ ]],
+ );
+ }
+
+ /**
+ * @return array customized attribute labels (name=>label)
+ */
+ public function attributeLabels()
+ {
+ return array(
+ 'Name' => 'Name',
+ 'Version' => 'Version',
+ 'Link' => 'Link',
+ );
+ }
+
+ /**
+ * Retrieves a list of models based on the current search/filter conditions.
+ *
+ * Typical usecase:
+ * - Initialize the model fields with values from filter form.
+ * - Execute this method to get CActiveDataProvider instance which will filter
+ * models according to data in model fields.
+ * - Pass data provider to CGridView, CListView or any similar widget.
+ *
+ * @return CActiveDataProvider the data provider that can return the models
+ * based on the search/filter conditions.
+ */
+ public function search()
+ {
+ $criteria=new CDbCriteria;
+
+ $criteria->compare('Name',$this->Name,true);
+ $criteria->compare('Version',$this->Version,true);
+ $criteria->compare('Link',$this->Link,true);
+
+ return new CActiveDataProvider($this, array(
+ 'criteria'=>$criteria,
+ ));
+ }
+
+ /**
+ * Returns the static model of the specified AR class.
+ * Please note that you should have this exact method in all your CActiveRecord descendants!
+ * @param string $className active record class name.
+ * @return ProgramUpdates the static model class
+ */
+ public static function model($className=__CLASS__)
+ {
+ return parent::model($className);
+ }
+}
diff --git a/www/protected/models/ProgramUpdatesLog.php b/www/protected/models/ProgramUpdatesLog.php
new file mode 100644
index 0000000..491bd0f
--- /dev/null
+++ b/www/protected/models/ProgramUpdatesLog.php
@@ -0,0 +1,102 @@
+64),
+ array('ip', 'length', 'max'=>24),
+ array('date', 'safe'),
+ // The following rule is used by search().
+ array('ID, programname, ip, version, date', 'safe', 'on'=>'search'),
+ );
+ }
+
+ /**
+ * @return array relational rules.
+ */
+ public function relations()
+ {
+ // NOTE: you may need to adjust the relation name and the related
+ // class name for the relations automatically generated below.
+ return array(
+ );
+ }
+
+ /**
+ * @return array customized attribute labels (name=>label)
+ */
+ public function attributeLabels()
+ {
+ return array(
+ 'ID' => 'ID',
+ 'programname' => 'Programname',
+ 'ip' => 'Ip',
+ 'version' => 'Version',
+ 'date' => 'Date',
+ );
+ }
+
+ /**
+ * Retrieves a list of models based on the current search/filter conditions.
+ *
+ * Typical usecase:
+ * - Initialize the model fields with values from filter form.
+ * - Execute this method to get CActiveDataProvider instance which will filter
+ * models according to data in model fields.
+ * - Pass data provider to CGridView, CListView or any similar widget.
+ *
+ * @return CActiveDataProvider the data provider that can return the models
+ * based on the search/filter conditions.
+ */
+ public function search()
+ {
+
+ $criteria=new CDbCriteria;
+
+ $criteria->compare('ID',$this->ID);
+ $criteria->compare('programname',$this->programname,true);
+ $criteria->compare('ip',$this->ip,true);
+ $criteria->compare('version',$this->version,true);
+ $criteria->compare('date',$this->date,true);
+
+ return new CActiveDataProvider($this, array(
+ 'criteria'=>$criteria,
+ ));
+ }
+
+ /**
+ * Returns the static model of the specified AR class.
+ * Please note that you should have this exact method in all your CActiveRecord descendants!
+ * @param string $className active record class name.
+ * @return ProgramUpdatesLog the static model class
+ */
+ public static function model($className=__CLASS__)
+ {
+ return parent::model($className);
+ }
+}
diff --git a/www/protected/views/programs/view.php b/www/protected/views/programs/view.php
index a7e5ee6..d42b65e 100644
--- a/www/protected/views/programs/view.php
+++ b/www/protected/views/programs/view.php
@@ -44,10 +44,12 @@ if (!$model->visible && Yii::app()->user->name != 'admin') {
Added: |
getDateTime()->format('d.m.Y'), array('color' => TbHtml::BADGE_COLOR_INFO)); ?> |
-
- Version: |
- TbHtml::BADGE_COLOR_INFO)); ?> |
-
+ version != null): ?>
+
+ Version: |
+ version->Version, array('color' => TbHtml::BADGE_COLOR_INFO)); ?> |
+
+