Merge branch 'master' into wip_leon_T7696_Journalist_delivery
authorleon <leon@roojs.com>
Tue, 4 Jul 2023 02:51:30 +0000 (10:51 +0800)
committerleon <leon@roojs.com>
Tue, 4 Jul 2023 02:51:30 +0000 (10:51 +0800)
DataObjects/Core_person.php
DataObjects/Images.php
JsCompile.php
MessagePreview.php
Pman.Tab.PersonList.js

index 05dbd5c..27fce2e 100644 (file)
@@ -1445,6 +1445,11 @@ class Pman_Core_DataObjects_Core_person extends DB_DataObject
     
     function beforeInsert($req, $roo)
     {
+         if (!empty($req['_bulk_update_passwords'])) {
+            $this->bulkUpdatePasswords($req['_bulk_update_passwords'], $roo);
+            return;
+        }
+        
         $p = DB_DataObject::factory('core_person');
         if ($roo->authUser->id > -1 ||  $p->count() > 1) {
             $pp = DB_DataObject::factory('core_person');
@@ -1718,6 +1723,62 @@ class Pman_Core_DataObjects_Core_person extends DB_DataObject
         
         return $content;
     }
-    
+    function bulkUpdatePasswords($data, $roo)
+    {
+        
+        if ( !$roo->hasPerm("Core.Staff", "E")) {
+            $roo->jerr("permission denied");
+        }
+        $rows = explode("\n",$data);
+        $upd = array();
+        $bad  = array();
+        
+        foreach($rows  as $i=>$row) {
+            if (!strlen(trim($row))) {
+                continue;
+            }
+            $bits = preg_split('/\s+/', trim($row));
+            if (count($bits) != 2) {
+                $bad[] = "Invalid line: {$row}";
+                continue;
+            }
+            // validate.
+            $upd[strtolower($bits[0])] = $bits[1];
+            
+        }
+        if (empty($upd)) {
+            
+            $roo->jerr(empty($bad) ? "No rows to update": ("ERRORS: ". implode("\n", $bad)));
+            return;
+        }
+        // next fetch them all.
+        $p = DB_DataObject::factory('core_person');
+        $p->whereAddIn('email', array_keys($upd), 'string');
+        foreach($p->fetchAll() as $p) {
+            $map[strtolower($p->email)] = $p;
+        }
+        foreach($upd as $k=>$nv) {
+            if (!isset($map[$k])) {
+                $bad[] = "Missing account with email: " . $k;
+                continue;
+            }
+            if ($map[$k]->id == $roo->authUser->id) {
+                $bad[] = "You can not update your own password here: " . $k;
+                continue;
+            }
+        }
+        if (!empty($bad)) {
+            $roo->jerr("ERRORS: ". implode("\n", $bad));
+            return;
+        }
+        foreach($map as $k => $p) {
+            $pp = clone($p);
+            $p->setPassword($upd[$k]);
+            $p->update($pp);
+        }
+        $roo->jok("Updated");
+        
+        
+    }
     
  }
index 31fd50b..6401243 100644 (file)
@@ -609,8 +609,10 @@ class Pman_Core_DataObjects_Images extends DB_DataObject
             $id = $matches[1];
         } else if (preg_match('#Images/([0-9]+)/#', $url, $matches)) {
             $id = $matches[1];
+        } else if (preg_match('#images[^/]+/([0-9]+)/#', $url, $matches)) {
+            // supports images.xxxxx.com/{number}/name...
+            $id = $matches[1];
         }
-        
         if ($id === false ||  $id < 1) {
             return false;
         }
index c53bf6c..4b10168 100644 (file)
@@ -228,6 +228,7 @@ class Pman_Core_JsCompile  extends Pman
             return false;
         }
         
+        // if packer is running, then dont compile - just output onebyone...
         
         
         require_once 'System.php';
@@ -251,6 +252,17 @@ class Pman_Core_JsCompile  extends Pman
             return true;
         }
         
+        
+        
+        $pg = System::which('pgrep');
+        $cmd = "$pg roobuilder";
+        $out = trim(`$cmd`);
+        if (strlen($out) > 0) {
+            echo '<!--  onther process is compiling compile. -->';
+            return false;
+        }
+         
+        
         if (file_exists($output)) {
             unlink($output);
         }
@@ -306,6 +318,15 @@ class Pman_Core_JsCompile  extends Pman
         
     }
     
+    
+    function packIsRunning()
+    {
+        require_once 'System.php';
+      
+        
+    }
+    
+    
     // depricated verison using seed.
     function packSeed($files, $output, $translation_base=false)
     {
index 09544b8..384cdbd 100644 (file)
@@ -6,6 +6,10 @@ class Pman_Core_MessagePreview extends Pman
 {
     var $masterTemplate = 'mail/MessagePreview.html';
     
+    
+    var $showHtml;
+    var $msg;
+    
     function getAuth()
     {
         if (HTML_FlexyFramework::get()->cli) {
@@ -51,6 +55,7 @@ class Pman_Core_MessagePreview extends Pman
             if (!method_exists($t,'notify'.$_REQUEST['evtype'])) {
                 $this->jerr("invalid evtype");
             }
+              
             $m = 'notify'.$_REQUEST['evtype'];
             $this->msg = (object)$t->$m('test@test.com', false, false, false);
            // print_R($this->msg->mailer );
index cf2c313..8ee3fb1 100644 (file)
@@ -564,8 +564,27 @@ Pman.Tab.PersonList.prototype = {
                 }
             
                      
-            }
+            },
+            '->',
             
+              {
+               
+                xtype : 'Button',
+                xns : Roo.Toolbar,
+               
+                text: "Bulk Change Passwords",
+                hidden : _this.permName != 'Core.Staff' || !Pman.hasPerm('Core.Staff', 'E'),
+                listeners : {
+                    click : function () {
+                        Pman.Dialog.AdminBulkPassword.show({}, function() { 
+                          refreshPager();
+                        });
+                        
+                    }
+                }
+            
+                     
+            }
 
         );