]> git.andy128k.dev Git - ipf.git/commitdiff
ordering table property
authorAndrey Kutejko <andy128k@gmail.com>
Sat, 17 Aug 2013 08:00:41 +0000 (11:00 +0300)
committerAndrey Kutejko <andy128k@gmail.com>
Sat, 17 Aug 2013 08:00:41 +0000 (11:00 +0300)
ipf/admin/model.php
ipf/orm/import/builder.php
ipf/orm/import/schema.php
ipf/orm/table.php

index a3318f1a0de78d140f6d3e9d0b2718e26a17b2df..c702c63cdca55495c904c4ba365344505f15b60a 100644 (file)
@@ -429,6 +429,8 @@ class IPF_Admin_Model
     {
         if (method_exists($this->model,'ordering')) {
             $ord = $this->model->ordering();
+        } elseif ($this->model->getTable()->getOrdering()) {
+            $ord = implode(', ', $this->model->getTable()->getOrdering());
         } elseif ($this->model->getTable()->hasTemplate('IPF_ORM_Template_Orderable')) {
             $ord = $this->model->getTable()->getTemplate('IPF_ORM_Template_Orderable')->getColumnName();
         } else {
index 362de0bbdc83ceaedf1da299b141240f6d9671e5..a97b47659e2ad6a9e54051f556b5124a34f427a7 100644 (file)
@@ -14,6 +14,15 @@ class IPF_ORM_Import_Builder
         return $export;
     }
 
+    private static function varExportList($list)
+    {
+        $export = array();
+        foreach ($list as $var) {
+            $export[] = self::varExport($var);
+        }
+        return 'array('.implode(', ', $export).')';
+    }
+
     private function buildTableDefinition(array $definition)
     {
         if (isset($definition['inheritance']['type']) && ($definition['inheritance']['type'] == 'simple' || $definition['inheritance']['type'] == 'column_aggregation')) {
@@ -34,6 +43,9 @@ class IPF_ORM_Import_Builder
         if (isset($definition['columns']) && is_array($definition['columns']) && !empty($definition['columns']))
             $ret[] = $this->buildColumns($definition['columns']);
 
+        if (isset($definition['ordering']) && is_array($definition['ordering']) && !empty($definition['ordering']))
+            $ret[] = '    $table->setOrdering('.self::varExportList($definition['ordering']).');';
+
         if (isset($definition['indexes']) && is_array($definition['indexes']) && !empty($definition['indexes']))
             foreach ($definition['indexes'] as $indexName => $definitions)
                 $ret[] = "    \$table->addIndex('" . $indexName . "', " . self::varExport($definitions) . ');';
index 3f7e073f8098ff17715a3a9ef6fb41e07c6d17a5..9b345adfa9ebd935a93c122991a189e2a686ad25 100644 (file)
@@ -21,6 +21,7 @@ class IPF_ORM_Import_Schema
             'inheritance',
             'detect_relations',
             'listeners',
+            'ordering',
         ),
         'column' => array(
             'name',
index 3392628b6eeb76d5e41053d53af51ee57e6060b4..af2c781db73e9437d6f1aa155bc6dcd6724575dc 100644 (file)
@@ -30,6 +30,8 @@ class IPF_ORM_Table extends IPF_ORM_Configurable implements Countable
                                      'subclasses'     => array(),
                                      );
 
+    protected $_ordering = null;
+
     protected $_parser;
 
     protected $_templates   = array();
@@ -871,6 +873,16 @@ class IPF_ORM_Table extends IPF_ORM_Configurable implements Countable
         $tpl->setTableDefinition($this);
     }
 
+    public function setOrdering($ordering)
+    {
+        $this->_ordering = $ordering;
+    }
+
+    public function getOrdering()
+    {
+        return $this->_ordering;
+    }
+
     public function bindQueryParts(array $queryParts)
     {
         $this->_options['queryParts'] = $queryParts;